select語句完整語法:
SELECT
DISTINCT select_list>
FROM left_table>
join_type> JOIN right_table>
ON join_condition>
WHERE where_condition>
GROUP BY group_by_list>
HAVING having_condition>
ORDER BY order_by_condition>
LIMIT limit_number>
執(zhí)行順序:
from →join →on →where →group by→having→select→order by→limit
(1)各個關鍵詞的作用:
from:需要從哪個數(shù)據(jù)表檢索數(shù)據(jù),如果有join則對 FROM 子句中的前兩個表執(zhí)行笛卡爾積(交叉聯(lián)接),生成臨時表(n×m行)
on:對以上臨時表進行條件篩選
left/right (join):補充左表或右表保持完整。如果有關聯(lián)多個表,則中間表對下個表繼續(xù)以上兩步的操作
- where:過濾表中數(shù)據(jù)的條件
- group by:如何將上面過濾出的數(shù)據(jù)分組
sum:聚合函數(shù)
- having:對上面已經(jīng)分組的數(shù)據(jù)進行過濾的條件
- select:查看結(jié)果集中的哪個列,或列的計算結(jié)果
distinct:
- order by :按照什么樣的順序來查看返回的數(shù)據(jù)
- limit:限制查詢結(jié)果返回的數(shù)量
(2)on與where的用法區(qū)別:
- a.on后面的篩選條件主要是針對的是關聯(lián)表【而對于主表刷選條件不適用】。
- b.如果是想再連接完畢后才篩選就應把條件放置于where后面。對于關聯(lián)表我們要區(qū)分對待。如果是要條件查詢后才連接應該把查詢件放置于on后。
- c.對于主表的篩選條件應放在where后面,不應該放在on后面
(3)having和where的用法區(qū)別:
- a.having只能用在group by之后,對分組后的結(jié)果進行篩選(即使用having的前提條件是分組)。
- b.where肯定在group by 之前,即也在having之前。
- c.where后的條件表達式里不允許使用聚合函數(shù),而having可以。
(4)count用法
使用count(列名)當某列出現(xiàn)null值的時候,count(*)仍然會計算,但是count(列名)不會。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- mysql代碼執(zhí)行結(jié)構(gòu)實例分析【順序、分支、循環(huán)結(jié)構(gòu)】
- 簡單了解mysql語句書寫和執(zhí)行順序
- 簡單了解MySQL SELECT執(zhí)行順序
- 有關mysql中sql的執(zhí)行順序的小問題
- SQL語句執(zhí)行深入講解(MySQL架構(gòu)總覽->查詢執(zhí)行流程->SQL解析順序)
- sql和MySQL的語句執(zhí)行順序分析
- 淺談mysql執(zhí)行過程以及順序