MySQL之senior(六)——合併查詢,limit
阿新 • • 發佈:2021-10-22
#查詢工作崗位是MANAGER和SALESMAN的員工:兩種寫法(union效率要更高)
select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN'; #in也可以
select ename,job from emp where job = 'MANAGER'
union
select ename,job from emp where job = 'SALESMAN';
#union的效率要高一些。對於表連線來說,每連線一次新表,則匹配的次數滿足笛卡爾積,成倍的翻。但是union可以減少匹配的次數。在減少匹配次數的情況下,還可以完成兩個結果集的拼接。
# a 連線 b 連線 c
# a 10條記錄
# b 10條記錄
# c 10條記錄
# 匹配次數是:1000
# a 連線 b一個結果:10 * 10 --> 100次
# a 連線 c一個結果:10 * 10 --> 100次
# 使用union的話是:100次 + 100次 = 200次。(union把乘法變成了加法運算)
#注意:
# union在進行結果集合並的時候,要求兩個結果集的列數相同
# MYSQL可以,oracle語法嚴格 ,不可以,報錯。oracle要求結果集合並時列和列的資料型別也要一致。(其實如果合併結果 集的查詢型別和列數不一致的話,也就沒什麼意義)
limit
-
作用:將查詢結果集的一部分取出來。通常使用在分頁查詢當中。 百度預設:一頁顯示10條記錄。 分頁的作用是為了提高使用者的體驗,因為一次全部都查出來,使用者體驗差。可以一頁一頁翻頁看。
-
用法: 完整用法:limit start_Index, length ;start_Index是起始下標,length是長度。 起始下標從0開始。 ( substr (ename, index, length) 起始下標從1開始,沒有0. ) 預設用法:limit 5; 這是取前5( 與 limit 0,5 一樣 )
-
注意:mysql當中limit在order by之後執行
-
分頁:
每頁顯示pageSize條記錄:
-
關於DQL語句的大總結: select ...from...where...group by...having...order by...limit...;
執行順序: 1.from 2.where 3.group by 4.having 5.select 6.order by