日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

查询语句中select from where group by having order by的执行顺序

發布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查询语句中select from where group by having order by的执行顺序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
查詢語句中select from where group by having order by的執行順序 1.查詢中用到的關鍵詞主要包含六個,并且他們的順序依次為? select--from--where--group by--having--order by? 其中select和from是必須的,其他關鍵詞是可選的,這六個關鍵詞的執行順序? 與sql語句的書寫順序并不是一樣的,而是按照下面的順序來執行? from--where--group by--having--select--order by,? from:需要從哪個數據表檢索數據? where:過濾表中數據的條件? group by:如何將上面過濾出的數據分組? having:對上面已經分組的數據進行過濾的條件? select:查看結果集中的哪個列,或列的計算結果? order by :按照什么樣的順序來查看返回的數據? 2.from后面的表關聯,是自右向左解析的? 而where條件的解析順序是自下而上的。? 也就是說,在寫SQL文的時候,盡量把數據量小的表放在最右邊來進行關聯(用小表去匹配大表),? 而把能篩選出小量數據的條件放在where語句的最左邊 (用小表去匹配大表)

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

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

二、數據分組(group?by?):?

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

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

三、使用having字句對分組后的結果進行篩選,語法和where差不多:having?條件表達式?

需要注意having和where的用法區別:?

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

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

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

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

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

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

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

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

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

例子:?

完成一個復雜的查詢語句,需求如下:?

按由高到低的順序顯示個人平均分在70分以上的學生姓名和平均分,為了盡可能地提高平均分,在計算平均分前不包括分數在60分以下的成績,并且也不計算賤人(jr)的成績。?分析:?

1.要求顯示學生姓名和平均分?

因此確定第1步select?s_name,avg(score)?from?student?

2.計算平均分前不包括分數在60分以下的成績,并且也不計算賤人(jr)的成績?

因此確定第2步?where?score>=60?and?s_name!=’jr’?3.顯示個人平均分?

相同名字的學生(同一個學生)考了多門科目?因此按姓名分組?確定第3步?group?by?s_name?4.顯示個人平均分在70分以上?

因此確定第4步?having?avg(s_score)>=70?5.按由高到低的順序?

因此確定第5步?order?by?avg(s_score)?desc?

五、索引??

1.索引是單獨的數據庫對象,索引也需要被維護。?2.索引可以提高查詢速度,但會降增刪改的速度。?3.通過一定的查詢觸發,并不是越多越好。?什么時候不適合用索引??

1.當增刪改的操作大于查詢的操作時。?2.查詢的語句大于所有語句的三分之一時。?

創建索引語法:create?index?索引名?on?表明?(列名)?刪除索引語法:drop?index?索引名

總結

以上是生活随笔為你收集整理的查询语句中select from where group by having order by的执行顺序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。