from
或join
會第乙個執行,確定乙個整體的資料範圍. 如果要join不同表,可能會生成乙個臨時table來用於 下面的過程。總之第一步可以簡單理解為確定乙個資料來源表(含臨時表)
我們確定了資料**where
語句就將在這個資料來源中按要求進行資料篩選,並丟棄不符合要求的資料行,所有的篩選col屬性 只能來自from
圈定的表. as別名還不能在這個階段使用,因為可能別名是乙個還沒執行的表示式
如果你用了group by
分組,那group by
將對之前的資料進行分組,統計等,並將是結果集縮小為分組數.這意味著 其他的資料在分組後丟棄.
如果你用了group by
分組,h**ing
會在分組完成後對結果集再次篩選。as別名也不能在這個階段使用.
確定結果之後,select
用來對結果col簡單篩選或計算,決定輸出什麼資料.
如果資料行有重複distinct
將負責排重.
在結果集確定的情況下,order by
對結果做排序。因為select
中的表示式已經執行完了。此時可以用as別名.
最後limit
和offset
從排序的結果中擷取部分資料.
SQl語句執行順序
在程式設計的時候,每個語言的一行 都是有執行順序,比如從右往左或者從左往右,在大部分的時候是不影響,但有些時候,執行順序卻有非常大的影響。int i 0 if i 0 i 0 if i 0 i 0 第一種情況會執行,第二種情況不會執行,因為判斷是從右往左判斷,條件不成立馬上就結束,第二種情況先判斷i...
SQL語句執行順序
1 from 子句,組裝來自不同資料來源的資料 2 where 子句,基於指定的條件對記錄進行篩選 3 group by 子句,將資料劃分為多個分組 4 使用聚合函式進行計算 5 使用 h ing 子句篩選分組 6 計算所有的表示式 7 使用 order by 對結果集進行排序 select dis...
sql語句not and or執行順序
今天的 中很悲催的出現了資訊洩漏的情況,開始我怎麼都不肯相信,首先自信自己的程式設計技術,其次自信自己對業務邏輯的理解,最後徹查 的時候,卻發現問題出現在sql語句的邏輯判斷上,這裡記錄一下吧 首先,sql語句中邏輯運算子優先順序跟c一樣,not and or c裡面是 select from ta...