數(shù)據(jù)庫大佬講課6

----Mysql Select 語句執(zhí)行順序

SQL查詢的大致語法結(jié)構(gòu)如下

(5)select distinct <select_list>
(1) from <left_table> <join_type>  join <right_table> on <on_predicate>
(2) where <where_predicate>
(3) group by <group_by_specification>
(4)having <having_predicate>
(6)order by <order _by_list>
(7)limit n,m
查詢處理的順序如下:
1.from
2.on 
3.join
4.where
5.group by
6.having
7.select
8.distinct
9.order by
10.limit
這些步驟執(zhí)行時宁改,每個步驟都會產(chǎn)生一個虛擬表朴读,該虛擬表被用作
下一個步驟的輸入盾舌。這些虛擬表對調(diào)用者(客戶端應用程序或者外
部查詢)不可用。只是最后一步生成的表才會返回給調(diào)用者志衣。如果
沒有在查詢中指定某一子句屯援,將跳過相應的步驟
select各個階段分別干了什么:
1.from階段
from階段標識出查詢的來源表,并處理表運算符念脯。在涉及到聯(lián)接運算的查詢中(各種join),主要有以下幾個步驟:
求笛卡爾積弯淘。不論是什么類型的聯(lián)接運算绿店,首先都是執(zhí)行交叉連接(CROSS JOIN),求笛卡兒積(Cartesian product)庐橙,生成虛擬表VT1-J1假勿。
ON篩選器。  這個階段對上個步驟生成的VT1-J1進行篩選态鳖,根據(jù)ON子句中出現(xiàn)的謂詞進行篩選转培,讓謂詞取值為true的行通過了考驗,插入到VT1-J2浆竭。
添加外部行浸须。如果指定了OUTER JOIN惨寿,如LEFT OUTERJOIN、RIGHT OUTER JOIN)删窒,還需要將VT1-J2中沒有找到匹配的行裂垦,作為外部行添加到VT1-J2中,
生成VT1-J3肌索。如果FROM子句包含兩個以上表蕉拢,則對上一個連接生成的結(jié)果表VT1-J3和下一個表重復依次執(zhí)行3個步驟,直到處理完所有的表為止诚亚。
2.where階段
WHERE階段是根據(jù)<where_predicate>中條件對VT1中的行進行篩選晕换,讓條件成立的行才會插入到VT2中。此時數(shù)據(jù)還沒有分組站宗,所以不能在WHERE中出現(xiàn)對統(tǒng)計的過濾闸准。
3.group by 
GROUP階段按照指定的列名列表,將VT2中的行進行分組份乒,生成VT3恕汇。最后每個分組只有一行。在GROUP BY階段或辖,數(shù)據(jù)庫認為兩個NULL值是相等的瘾英,因此會將NULL值分到同一個分組中。
4.having 
該階段根據(jù)HAVING子句中出現(xiàn)的謂詞對VT3的分組進行篩選颂暇,并將符合條件的組插入到VT4中缺谴。COUNT(expr) 會返回expr不為NULL的行數(shù),count(1)耳鸯、count(*)會返回包括NULL值在內(nèi)的所有數(shù)量湿蛔。
5.select 
這個階段是投影的過程,處理SELECT子句提到的元素县爬,產(chǎn)生VT5阳啥。這個步驟一般按下列順序進行:
計算SELECT列表中的表達式,生成VT5-1财喳。
若有DISTINCT察迟,則刪除VT5-1中的重復行,生成VT5-2耳高。
6.order by
根據(jù)ORDER BY子句中指定的列明列表扎瓶,對VT5-2中的行,進行排序泌枪,生成VT6概荷。如果不指定排序,數(shù)據(jù)并非總是按照主鍵順序進行排序的碌燕。NULL被視為最小值误证。
7.limit 
取出指定行的記錄继薛,產(chǎn)生虛擬表VT7,并返回給查詢用戶雷厂。LIMIT n, m的效率是十分低的惋增,一般可以通過在WHERE條件中指定范圍來優(yōu)化 WHERE id > ? limit 10。

----結(jié)構(gòu)化查詢語言分類

結(jié)構(gòu)化查詢語言可分為5類
數(shù)據(jù)查詢語言(DQL:Data Query Language):
語句主要包括select,用于從表中檢索數(shù)據(jù)
數(shù)據(jù)操作語言(DML:Data Manipulation Language):
語句主要包括insert,updata和delete,用于添加改鲫,修改和刪除表中的行數(shù)據(jù)诈皿。
事務處理語言(TPL:Transaction Process Language):
語句主要包括commit和rollback,用于提交和回滾
數(shù)據(jù)控制語言(DCL:Data Control Language):
語句主要包括grant和revoke,用于進行授權(quán)和收回權(quán)限
數(shù)據(jù)定義語言(DDL:Data Definition Language):
語句主要包括create,drop,alter,用于定義、銷毀像棘、修改數(shù)據(jù)庫對象稽亏。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缕题,隨后出現(xiàn)的幾起案子截歉,更是在濱河造成了極大的恐慌,老刑警劉巖烟零,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘪松,死亡現(xiàn)場離奇詭異,居然都是意外死亡锨阿,警方通過查閱死者的電腦和手機宵睦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來墅诡,“玉大人壳嚎,你說我怎么就攤上這事∧┰纾” “怎么了烟馅?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長然磷。 經(jīng)常有香客問我郑趁,道長,這世上最難降的妖魔是什么姿搜? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任穿撮,我火速辦了婚禮,結(jié)果婚禮上痪欲,老公的妹妹穿的比我還像新娘。我一直安慰自己攻礼,他們只是感情好业踢,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著礁扮,像睡著了一般知举。 火紅的嫁衣襯著肌膚如雪瞬沦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天雇锡,我揣著相機與錄音逛钻,去河邊找鬼。 笑死锰提,一個胖子當著我的面吹牛曙痘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播立肘,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼边坤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谅年?” 一聲冷哼從身側(cè)響起茧痒,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎融蹂,沒想到半個月后旺订,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡超燃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年区拳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淋纲。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劳闹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洽瞬,到底是詐尸還是另有隱情本涕,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布伙窃,位于F島的核電站菩颖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏为障。R本人自食惡果不足惜晦闰,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鳍怨。 院中可真熱鬧呻右,春花似錦、人聲如沸鞋喇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽侦香。三九已至落塑,卻和暖如春纽疟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憾赁。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工污朽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人龙考。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓蟆肆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親洲愤。 傳聞我的和親對象是個殘疾皇子颓芭,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容