where子句:
通過在SELECT語句的WHERE子句中指定條件進行查詢,WHERE子句必須緊跟在FROM子句之後。
如:從員工表裡查詢員工id為h0001的員工的工資
select 工資 from 工資表 where id='h0001';
having:
having一般與group by組合來使用,表示在得到分類彙總記錄的基礎之上,進一步篩選記錄。
如:從部門表裡查部門内員工薪水總和大于100000的部門的編号
select 部門編号,sum(薪水) from 部門表 group by 部門編号 having sum(薪水)>100000;
相同點:where和having都可以加條件
差別:1.where在分組之前加條件,having在分組之後加條件.
2.where的效率要遠遠高于having. 分組本身消耗資源非常大.
GROUP BY:
當需要分組查詢時需要使用GROUP BY子句,例如查詢每個部門的工資和,這說明要使用部門來分組。
select 部門編号,sum(薪水) from 部門表 group by 部門編号;
ORDER BY:
order by 用來指定資料的排序方式。有升序和降序兩種。desc表示降序,asc為升序,預設為升序,asc可省略。
order by 要寫在where之後,limit之前。
select * from stu_info order by id asc;// 按照id升序排序,其中asc可省略。
select * from stu_info order by id desc; //按照id降序
LIMITE:
LIMIT用來限定查詢結果的起始行,以及總行數。
如:查詢10行記錄,起始行從3開始
select * from emp limit 3,10;
綜合運用時的使用順序:
有如下表中資料:
從employee表中查詢salary列的值>0且prize字段值>0的記錄,結果以id字段分組且降序排列,起始行從0開始,顯示5行:
select * from employee where salary>0 group by id having prize>0 order by id desc limit 0,5 ;
結果:
查詢到的記錄條數小于5行,是以隻能顯示查詢到的總行數。
注意各個關鍵字使用時的位置和順序,where在分組之前加條件,having在分組之後加條件,where的效率要遠遠高于having, 分組本身消耗資源非常大。order by 要寫在where之後,limit之前。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
技術交流微信:intboy520
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>