MySQL語(yǔ)句執(zhí)行順序和編寫(xiě)順序?qū)嵗馕?/h1>
更新時(shí)間:2020年06月23日 15:01:50 作者:cknds
這篇文章主要介紹了MySQL語(yǔ)句執(zhí)行順序和編寫(xiě)順序?qū)嵗馕?文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
-
設(shè)置MySQLroot賬戶密碼報(bào)錯(cuò)ERROR 1064 (42000): You 
在安裝mysql的時(shí)候,設(shè)置root賬戶密碼出現(xiàn)了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..錯(cuò)誤,本文小編給大家介紹了相關(guān)的解決方案,需要的朋友可以參考下 2023-12-12
-
Mysql詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎
這篇文章詳細(xì)剖析了數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎,存儲(chǔ)引擎是數(shù)據(jù)庫(kù)中非常關(guān)鍵的部分,有感興趣的小伙伴可以參考閱讀本文 2023-03-03
-
Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn)
這篇文章主要介紹了Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2020-12-12
-
Centos中安裝多個(gè)mysql數(shù)據(jù)的配置實(shí)例
最近因?yàn)閱挝豁?xiàng)目擴(kuò)充,需要在原線上數(shù)據(jù)庫(kù)服務(wù)器上加裝一個(gè)mysql實(shí)例(實(shí)際上就是從新編譯安裝一個(gè)非3306的自定義端口,不同目錄的mysql),研究了一天,終于順利搞定,這里把配置步驟發(fā)給大家,供大家學(xué)習(xí)使用 2014-04-04
-
MySQL InnoDB行記錄存儲(chǔ)結(jié)構(gòu)分析
工作中我們基本上都是用MySQL的InnoDB存儲(chǔ)引擎,但是大家有去了解過(guò)它的底層存儲(chǔ)結(jié)構(gòu)嗎,想必絕大部分人不知道或者說(shuō)不知道怎么查相關(guān)知識(shí),剛好來(lái)看這篇文章就對(duì)了 2023-07-07
-
mysql不走索引的幾個(gè)問(wèn)題小結(jié)
MySQL中不走索引的問(wèn)題通常發(fā)生在查詢中使用了函數(shù),這會(huì)使索引失效,從而影響查詢性能,本文就介紹了mysql不走索引的幾個(gè)問(wèn)題小結(jié),感興趣的可以了解一下 2023-08-08
-
mysql如何將表結(jié)構(gòu)導(dǎo)出到excel
這篇文章主要介紹了mysql如何將表結(jié)構(gòu)導(dǎo)出到excel,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下 2020-09-09
最新評(píng)論
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í)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
設(shè)置MySQLroot賬戶密碼報(bào)錯(cuò)ERROR 1064 (42000): You 
在安裝mysql的時(shí)候,設(shè)置root賬戶密碼出現(xiàn)了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..錯(cuò)誤,本文小編給大家介紹了相關(guān)的解決方案,需要的朋友可以參考下2023-12-12Mysql詳細(xì)剖析數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎
這篇文章詳細(xì)剖析了數(shù)據(jù)庫(kù)中的存儲(chǔ)引擎,存儲(chǔ)引擎是數(shù)據(jù)庫(kù)中非常關(guān)鍵的部分,有感興趣的小伙伴可以參考閱讀本文2023-03-03Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn)
這篇文章主要介紹了Windows下MySQL定時(shí)備份腳本的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Centos中安裝多個(gè)mysql數(shù)據(jù)的配置實(shí)例
最近因?yàn)閱挝豁?xiàng)目擴(kuò)充,需要在原線上數(shù)據(jù)庫(kù)服務(wù)器上加裝一個(gè)mysql實(shí)例(實(shí)際上就是從新編譯安裝一個(gè)非3306的自定義端口,不同目錄的mysql),研究了一天,終于順利搞定,這里把配置步驟發(fā)給大家,供大家學(xué)習(xí)使用2014-04-04MySQL InnoDB行記錄存儲(chǔ)結(jié)構(gòu)分析
工作中我們基本上都是用MySQL的InnoDB存儲(chǔ)引擎,但是大家有去了解過(guò)它的底層存儲(chǔ)結(jié)構(gòu)嗎,想必絕大部分人不知道或者說(shuō)不知道怎么查相關(guān)知識(shí),剛好來(lái)看這篇文章就對(duì)了2023-07-07mysql不走索引的幾個(gè)問(wèn)題小結(jié)
MySQL中不走索引的問(wèn)題通常發(fā)生在查詢中使用了函數(shù),這會(huì)使索引失效,從而影響查詢性能,本文就介紹了mysql不走索引的幾個(gè)問(wèn)題小結(jié),感興趣的可以了解一下2023-08-08mysql如何將表結(jié)構(gòu)導(dǎo)出到excel
這篇文章主要介紹了mysql如何將表結(jié)構(gòu)導(dǎo)出到excel,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-09-09