1. 程式人生 > 其它 >SQL刷題

SQL刷題

SQL基礎——

1.要求查詢所有列

——有兩種方式,

方式一:select * from 表名;

方式二:select 列名1,列名2,列名3... from 表名;

實際開發中,更建議使用第二種,因為第一種實際上需要先將*轉化為每個列名,然後再開始查詢,執行時間相對第二種更久,記憶體佔用更高。

且在實際的業務需求中,通過第二種方式 select 列名 來查詢可以自定義顯示的順序,以及顯示的欄位,更加靈活。

2.運營只需要檢視前2個使用者明細裝置ID資料,請你從使用者資訊表 user_profile 中取出相應結果

——有三種方式,

select device_id from user_profile limit 0,2---執行效率高

select device_id from user_profile limit 2 ---執行效率低

也可結合 limit offset: 一起使用時,limit表示要取的數量,offset表示跳過的數量

select device_id from user_profile limit 2 offset 0 // 跳過0條,從第一條資料開始取,取兩條資料 ---執行效率中

使用LIMIT限制結果集

LIMIT 子句可以被用於強制 SELECT 語句返回指定的記錄數。
LIMIT 接受一個或兩個數字引數。引數必須是一個整數常量。
如果只給定一個引數,它表示返回最大的記錄行數目。
如果給定兩個引數,第一個引數指定第一個返回記錄行的偏移量,第二個引數指定返回記錄行的最大數目。
為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1。
初始記錄行的偏移量是 0(而不是 1)。

檢索記錄行 6-10——SELECT FROM table LIMIT 5,5

檢索記錄行 11-last——SELECT FROM table LIMIT 10,-1

檢索前 5 個記錄行——SELECT FROM table LIMIT 5

3.需要檢視前2個使用者明細裝置ID資料,並將列名改為 'user_infos_example',請你從使用者資訊表取出相應結果

select device_id user_infos_example from user_profile limit 0,2;

//1.as 寫不寫都可 //2.別名加不加引號(單雙)都可     //加引號:別名就是引號內的內容。
    //不加引號:別名如果為小寫,會解析為大寫,別名實際為大寫。 //以上兩點在呼叫別名時要注意,易報錯:找不到對應的列(大小寫對應的是不同的列)

4.現在運營想要篩選出所有北京大學的學生進行使用者調研,請你從使用者資訊表中取出滿足條件的資料,結果返回裝置id和學校

select device_id, university from user_profile where university = '北京大學';

可以優化一下,

使用索引覆蓋效率提升80%

select語句中使用的索引覆蓋所有需要查詢的欄位

覆蓋索引的原理:就是查詢欄位在 二級索引中全部找到,不需要回表查詢

覆蓋索引只是特定於具體select語錄而言的聯合索引。也就是說一個聯合索引對於某個select語句,通過索引可以直接獲取查詢結果,而不再需要回表查詢啦,就稱該聯合索引覆蓋了這條select語句。

本題中經過測試,device_id,university 為聯合索引,因此:

Select device_id,university FROM user_profile where university = "北京大學" and device_id = user_profile.device_id;

device_id = user_profile.device_id 這一步是100%成立的,使用的目的就是索引覆蓋,以此實現提升查詢效率

5.

用where過濾空值

方法1:select device_id,gender,age,university from user_profile where age is not NULL --執行效率高

方法2:select device_id,gender,age,university from user_profile where age !='' --執行效率低

6.

  1. _ :下劃線 代表匹配任意一個字元;

  2. % :百分號 代表匹配0個或多個字元;

  3. []: 中括號 代表匹配其中的任意一個字元;

  4. [^]: ^尖冒號 代表 非,取反的意思;不匹配中的任意一個字元。

tips:面試常問的一個問題:你瞭解哪些資料庫優化技術?

SQL語句優化也屬於資料庫優化一部分,而我們的like模糊查詢會引起全表掃描,速度比較慢,應該儘量避免使用like關鍵字進行模糊查詢。

7.