MySQL語句執(zhí)行順序和編寫順序?qū)嵗馕?/h1>
更新時間:2020年06月23日 15:01:50 作者:cknds
這篇文章主要介紹了MySQL語句執(zhí)行順序和編寫順序?qū)嵗馕?文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
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.如果是想再連接完畢后才篩選就應把條件放置于where后面。對于關(guān)聯(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
-
設置MySQLroot賬戶密碼報錯ERROR 1064 (42000): You 
在安裝mysql的時候,設置root賬戶密碼出現(xiàn)了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..錯誤,本文小編給大家介紹了相關(guān)的解決方案,需要的朋友可以參考下 2023-12-12
-
Centos中安裝多個mysql數(shù)據(jù)的配置實例
最近因為單位項目擴充,需要在原線上數(shù)據(jù)庫服務器上加裝一個mysql實例(實際上就是從新編譯安裝一個非3306的自定義端口,不同目錄的mysql),研究了一天,終于順利搞定,這里把配置步驟發(fā)給大家,供大家學習使用 2014-04-04
-
MySQL InnoDB行記錄存儲結(jié)構(gòu)分析
工作中我們基本上都是用MySQL的InnoDB存儲引擎,但是大家有去了解過它的底層存儲結(jié)構(gòu)嗎,想必絕大部分人不知道或者說不知道怎么查相關(guān)知識,剛好來看這篇文章就對了 2023-07-07
最新評論
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.如果是想再連接完畢后才篩選就應把條件放置于where后面。對于關(guān)聯(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
設置MySQLroot賬戶密碼報錯ERROR 1064 (42000): You 
在安裝mysql的時候,設置root賬戶密碼出現(xiàn)了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..錯誤,本文小編給大家介紹了相關(guān)的解決方案,需要的朋友可以參考下2023-12-12
Centos中安裝多個mysql數(shù)據(jù)的配置實例
最近因為單位項目擴充,需要在原線上數(shù)據(jù)庫服務器上加裝一個mysql實例(實際上就是從新編譯安裝一個非3306的自定義端口,不同目錄的mysql),研究了一天,終于順利搞定,這里把配置步驟發(fā)給大家,供大家學習使用2014-04-04
MySQL InnoDB行記錄存儲結(jié)構(gòu)分析
工作中我們基本上都是用MySQL的InnoDB存儲引擎,但是大家有去了解過它的底層存儲結(jié)構(gòu)嗎,想必絕大部分人不知道或者說不知道怎么查相關(guān)知識,剛好來看這篇文章就對了2023-07-07

