版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/qq_25186987/article/details/54311384
收起
理解sql語句的執行順序對優化sql非常重要,那麼sql語句的執行順序是怎樣的呢,以一條簡單的的語句做分析:
這一條語句包含我們經常用到的一些關鍵字,select,from,where,group by,order by,它的執行順序如下:
先執行from關鍵字後面的語句,明確數據的來源,它是從哪張表取來的。
接着執行where關鍵字後面的語句,對數據進行篩選。
再接着執行group by後面的語句,對數據進行分組分類。
然後執行select後面的語句,也就是對處理好的數據,具體要取哪一部分。
最後執行order by後面的語句,對最終的結果進行排序。
關於這個順序,我們可以用別名來做一個判斷:
左圖給emp_sex取了個別名sex,然後order by後面使用了這個別名,能正常的查到數據,說明order by的執行是在select之後。再看右邊的這個圖,筆者接着在group by後面也使用了sex別名,點擊查詢後提示錯誤:列名‘sex’無效。說明group by的執行是在select之前。
至此我們有了初步的結論group by > select > order by。
接下來筆者也給表取了個別名,然後在where和group 後面引用這個別名。
sql正常執行,說明where和group by語句均在from語句之後執行。也就是,from > where 和 from > group by
最後只剩下where和group by的比較了,這個無法用表別名來判斷,筆者目前想到的是‘常識’。這個常識就是:分組之前的過濾用where,分組之後的過濾用having。可見,where的執行是在group by之前的,即 where > group by。
根據數學知識,由
group by > select > order by
from > where
from > group by
where > group by
可得 from > where > group by > select > order by。這就是一條基本sql的執行順序。
————————————————
版權聲明:本文爲CSDN博主「碼前小卒」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_25186987/article/details/54311384