MySQL語句執(zhí)行順序和編寫順序?qū)嵗馕?/h1>
瀏覽:100日期:2023-10-14 13:48:11
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)各個關(guān)鍵詞的作用:
from:需要從哪個數(shù)據(jù)表檢索數(shù)據(jù),如果有join則對 FROM 子句中的前兩個表執(zhí)行笛卡爾積(交叉聯(lián)接),生成臨時表(n×m行)
on:對以上臨時表進行條件篩選
left/right (join):補充左表或右表保持完整。如果有關(guān)聯(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后面的篩選條件主要是針對的是關(guān)聯(lián)表【而對于主表刷選條件不適用】。 b.如果是想再連接完畢后才篩選就應(yīng)把條件放置于where后面。對于關(guān)聯(lián)表我們要區(qū)分對待。如果是要條件查詢后才連接應(yīng)該把查詢件放置于on后。 c.對于主表的篩選條件應(yīng)放在where后面,不應(yīng)該放在on后面 (3)having和where的用法區(qū)別:
a.having只能用在group by之后,對分組后的結(jié)果進行篩選(即使用having的前提條件是分組)。 b.where肯定在group by 之前,即也在having之前。 c.where后的條件表達式里不允許使用聚合函數(shù),而having可以。 (4)count用法
使用count(列名)當(dāng)某列出現(xiàn)null值的時候,count(*)仍然會計算,但是count(列名)不會。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
標(biāo)簽:
MySQL
數(shù)據(jù)庫
相關(guān)文章:
1. 簡述MySql四種事務(wù)隔離級別2. oracle imp字符集問題的解決3. 一篇文章帶你掌握SQLite3基本用法4. Mybatis Plus使用條件構(gòu)造器增刪改查功能的實現(xiàn)方法5. MySQL基礎(chǔ)教程11 —— 函數(shù)之Cast函數(shù)和操作符6. Sql Server全文搜索中文出錯的問題7. Oracle數(shù)據(jù)庫中臨時表的進一步深入研究8. Linux安裝MariaDB數(shù)據(jù)庫的實例詳解9. centos編譯安裝mariadb的詳細(xì)過程10. Windows10系統(tǒng)下安裝MariaDB 的教程圖解
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)各個關(guān)鍵詞的作用:
from:需要從哪個數(shù)據(jù)表檢索數(shù)據(jù),如果有join則對 FROM 子句中的前兩個表執(zhí)行笛卡爾積(交叉聯(lián)接),生成臨時表(n×m行)
on:對以上臨時表進行條件篩選
left/right (join):補充左表或右表保持完整。如果有關(guān)聯(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后面的篩選條件主要是針對的是關(guān)聯(lián)表【而對于主表刷選條件不適用】。 b.如果是想再連接完畢后才篩選就應(yīng)把條件放置于where后面。對于關(guān)聯(lián)表我們要區(qū)分對待。如果是要條件查詢后才連接應(yīng)該把查詢件放置于on后。 c.對于主表的篩選條件應(yīng)放在where后面,不應(yīng)該放在on后面(3)having和where的用法區(qū)別:
a.having只能用在group by之后,對分組后的結(jié)果進行篩選(即使用having的前提條件是分組)。 b.where肯定在group by 之前,即也在having之前。 c.where后的條件表達式里不允許使用聚合函數(shù),而having可以。(4)count用法
使用count(列名)當(dāng)某列出現(xiàn)null值的時候,count(*)仍然會計算,但是count(列名)不會。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
