SQL 關鍵字的使用順序


1、查詢中用到的關鍵詞主要包含六個,並且他們的順序依次為 

  select --> from --> where --> group by --> having --> order by 

  其中selectfrom是必須的,其他關鍵詞是可選的


 2、六個關鍵詞的執行順序是:

  from --> where --> group by --> having --> select --> order by

  from: 需要從哪個數據表檢索數據 。

  where: 過濾表中數據的條件。

  group by: 如何將上面過濾出的數據分組。

  having: 對上面已經分組的數據進行過濾的條件。

  select: 查看結果集中的哪個列,或列的計算結果。

  order by: 按照什么樣的順序來查看返回的數據。


 3、使用注意:

  ①、from后面的表關聯,是自右向左解析的,而where條件的解析順序是自下而上的。 也就是說,在寫SQL的時候,盡量把數據量小的表放在最右邊來進行關聯(用小表去匹配大表);而把能篩選出小量數據的條件放在where語句的最左邊 (用小表去匹配大表)。

  ②、使用count(列名)當某列出現null值的時候,count*)仍然會計算,但是count(列名)不會。

  ③、group by:select a,聚合函數(聚合函數規范) from 表明 where 過濾條件 group by 列

     group by 子句也和where條件語句結合在一起使用。當結合在一起時,where在前,group by在后。即先對select xx from xx的記錄集合用where進行篩選,然后再使用group by對篩選后的結果進行分組。

  ④、having:having條件表達式,但是需要注意havingwhere的用法區別:

    i. having只能用在group by之后,對分組后的結果進行篩選(即使用having的前提條件是分組)。 

    ii. where肯定在group by之前,即也在having之前。

    iii. where后的條件表達式里不允許使用聚合函數,而having可以。

  ⑤、當一個查詢語句同時出現了where, group by, having, order by的時候,執行順序和編寫順序是: 

    i. 執行where xx對全表數據做篩選,返回第1個結果集。

    ii. 針對第1個結果集使用group by分組,返回第2個結果集。

    iii. 針對第2個結集執行having xx進行篩選,返回第3個結果集。

    iv. 針對第3個結果集中的每1組數據執行select xx,有幾組就執行幾次,返回第4個結果集。

    v. 針對第4個結果集排序。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM