(轉)一條sql執行順序

版權聲明:本文爲博主原創文章,遵循 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章