select語句完整語法:
SELECT DISTINCTFROMJOINONWHEREGROUP BYHAVINGORDER BYLIMIT
執行順序:
from →join →on →where →group by→having→select→order by→limit
(1)各個關鍵詞的作用:
from:需要從哪個數據表檢索數據,如果有join則對 FROM 子句中的前兩個表執行笛卡爾積(交叉聯接),生成臨時表(n×m行)
on:對以上臨時表進行條件篩選
left/right (join):補充左表或右表保持完整。如果有關聯多個表,則中間表對下個表繼續以上兩步的操作
where:過濾表中數據的條件
group by:如何將上面過濾出的數據分組
sum:聚合函數
having:對上面已經分組的數據進行過濾的條件
select:查看結果集中的哪個列,或列的計算結果
distinct:
order by :按照什麼樣的順序來查看返回的數據
limit:限制查詢結果返回的數量
(2)on與where的用法區別:
a.on後面的篩選條件主要是針對的是關聯表【而對於主表刷選條件不適用】。
b.如果是想再連接完畢後才篩選就應把條件放置於where後面。對於關聯表我們要區分對待。如果是要條件查詢後才連接應該把查詢件放置於on後。
c.對於主表的篩選條件應放在where後面,不應該放在on後面
(3)having和where的用法區別:
a.having只能用在group by之後,對分組後的結果進行篩選(即使用having的前提條件是分組)。
b.where肯定在group by 之前,即也在having之前。
c.where後的條件表達式裡不允許使用聚合函數,而having可以。
(4)count用法
使用count(列名)當某列出現null值的時候,count(*)仍然會計算,但是count(列名)不會。
[limiyoyo ] MySQL語句執行順序和編寫順序實例解析已經有251次圍觀