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