#進階8 分頁查詢 /* 應用場景: 當要顯示的數據,一頁顯示不全,需要分頁提交sql請求 語法: select 查詢列表 #7 from 表1 #執行順序:#1 【join type join 表2 #2 on 連接條件 #3 where 篩選條件 #4 group by 分組字段 #5 having 分組后篩選或函數 #6 order by 排序的字段 #8 】 limit offset, size ; #9 #offset 要顯示條目的起始索引(從0開始,0想可以省略),size 要顯示的條目個數 特點: ①limit語句放在查詢語句的,執行上語法上都在最后 ②公式, 要顯示的頁數page ,每頁的條目數 size select 查詢列表 from 表 limit(page-1)*size ,size; */ #案例1: 查詢前五條員工信息 SELECT * FROM employees LIMIT 0,5; SELECT * FROM employees LIMIT 5; #案例2:查詢第11到第25條 SELECT * FROM employees LIMIT 11,15; # 案例3:有獎金的員工信息,並且工資較高的前10項顯示出來 SELECT * FROM employees WHERE commission_pct IS NOT NULL ORDER BY salary DESC LIMIT 10; #-------------------------- #課堂練習 #1.查詢所有學員的郵箱的用戶名(注: 郵箱中 @前的字符) ;instr() : 返回子串的索引下標 SELECT SUBSTR( email,1,INSTR(email,'@')-1) FROM stuinfo; #------------------------------------ #子查詢的經典案例 #1:查詢工資最低的員工信息: last_name,salary SELECT last_name,salary FROM employees WHERE salary=( SELECT MIN(salary) FROM employees ); #2:查詢平均工資最低的部門信息 #方式1: #分組查詢平均工資 #查詢最低的一組 #查詢那個部門最低平均工資 = 最低的一組 SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id; SELECT MIN(ag) FROM ( SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id )ag_dep; SELECT *,AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) = ( SELECT MIN(ag) FROM ( SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id )ag_dep ); #方式2: #①分組查詢平均工資 SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id; #②求出最低的(limit=1)平均工資的部門編號 SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1; #③ 進行嵌套,輸出該部門信息 SELECT * FROM departments WHERE department_id =( SELECT department_id FROM employees GROUP BY department_id ORDER BY AVG(salary) LIMIT 1 ); #3: 查詢平均工資高於公司的平均工資的部門有哪些 #①查詢平均工資 SELECT AVG(salary) FROM employees; #② 查詢每個部門的 SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id; #③ 進行篩選2的結果集: > ① 即可! SELECT *,AVG(salary) ag,department_id FROM employees GROUP BY department_id HAVING ag >( SELECT AVG(salary) FROM employees );
