色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SQL的執行順序圖解

jf_ro2CN3Fa ? 來源:csdn ? 2023-09-16 12:49 ? 次閱讀

數據的關聯過程

from&join&where

group by

having&where

select

order by

limit

這是一條標準的查詢語句:

e509d22c-53b0-11ee-a25d-92fbcf53809c.png

這是我們實際上SQL執行順序:

我們先執行from,join來確定表之間的連接關系,得到初步的數據

where對數據進行普通的初步的篩選

group by 分組

各組分別執行having中的普通篩選或者聚合函數篩選。

然后把再根據我們要的數據進行select,可以是普通字段查詢也可以是獲取聚合函數的查詢結果,如果是集合函數,select的查詢結果會新增一條字段

將查詢結果去重distinct

最后合并各組的查詢結果,按照order by的條件進行排序

eb1453cc-53b0-11ee-a25d-92fbcf53809c.png

數據的關聯過程

數據庫中的兩張表

eb5d540a-53b0-11ee-a25d-92fbcf53809c.png

from&join&where

用于確定我們要查詢的表的范圍,涉及哪些表。

選擇一張表,然后用join連接

fromtable1jointable2ontable1.id=table2.id

選擇多張表,用where做關聯條件

fromtable1,table2wheretable1.id=table2.id

我們會得到滿足關聯條件的兩張表的數據,不加關聯條件會出現笛卡爾積。

eb7739b0-53b0-11ee-a25d-92fbcf53809c.png

group by

按照我們的分組條件,將數據進行分組,但是不會篩選數據。

比如我們按照即id的奇偶分組

eb918a86-53b0-11ee-a25d-92fbcf53809c.png

having&where

having中可以是普通條件的篩選,也能是聚合函數。而where只能是普通函數,一般情況下,有having可以不寫where,把where的篩選放在having里,SQL語句看上去更絲滑。

使用where再group by

先把不滿足where條件的數據刪除,再去分組

使用group by再having

先分組再刪除不滿足having條件的數據,這兩種方法有區別嗎,幾乎沒有!

舉個例子:

100/2=50,此時我們把100拆分(10+10+10+10+10…)/2=5+5+5+…+5=50,只要篩選條件沒變,即便是分組了也得滿足篩選條件,所以where后group by 和group by再having是不影響結果的!

不同的是,having語法支持聚合函數,其實having的意思就是針對每組的條件進行篩選。我們之前看到了普通的篩選條件是不影響的,但是having還支持聚合函數,這是where無法實現的。

當前數據分組情況

eb918a86-53b0-11ee-a25d-92fbcf53809c.png

執行having的篩選條件,可以使用聚合函數。篩選掉工資小于各組平均工資的having salary

ebc315f6-53b0-11ee-a25d-92fbcf53809c.png

select

分組結束之后,我們再執行select語句,因為聚合函數是依賴于分組的,聚合函數會單獨新增一個查詢出來的字段,這里用紫色表示,這里我們兩個id重復了,我們就保留一個id,重復字段名需要指向來自哪張表,否則會出現唯一性問題。最后按照用戶名去重。

selectemployee.id,distinctname,salary,avg(salary)

ebd4b950-53b0-11ee-a25d-92fbcf53809c.png

將各組having之后的數據再合并數據。

f1e28674-53b0-11ee-a25d-92fbcf53809c.png

order by

最后我們執行order by 將數據按照一定順序排序,比如這里按照id排序。如果此時有limit那么查詢到相應的我們需要的記錄數時,就不繼續往下查了。

f1fff146-53b0-11ee-a25d-92fbcf53809c.png

limit

記住limit是最后查詢的,為什么呢?假如我們要查詢年級最小的三個數據,如果在排序之前就截取到3個數據。實際上查詢出來的不是最小的三個數據而是前三個數據了,記住這一點。

我們如果limit 0,3竊取前三個數據再排序,實際上最少工資的是2000,3000,4000。你這里只能是4000,5000,8000了。

f21331c0-53b0-11ee-a25d-92fbcf53809c.png

編輯:黃飛

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7067

    瀏覽量

    89132
  • SQL
    SQL
    +關注

    關注

    1

    文章

    766

    瀏覽量

    44165

原文標題:圖解 SQL 的執行順序,一目了然!

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MySQL的執行過程 SQL語句性能優化常用策略

    回顧 MySQL 的執行過程,幫助介紹如何進行 sql 優化。
    的頭像 發表于 12-12 10:26 ?681次閱讀
    MySQL的<b class='flag-5'>執行</b>過程 <b class='flag-5'>SQL</b>語句性能優化常用策略

    連接oracle數據庫,封裝sql執行子vi

    連接oracle數據庫,封裝sql執行子vi。連接oracle數據庫可以安裝oracle客戶端,或者通過odbc的方式去連接。連接后,可通過封裝的子vi,執行sql語句。
    發表于 07-03 12:07

    ARM架構應用實例01順序執行

    ARM嵌入式應用程序架構設計實例精講--ARM架構應用實例01順序執行
    發表于 07-07 18:24 ?3次下載

    ARM應用程序構架_順序執行模板

    ARM嵌入式應用程序架構設計實例精講--ARM應用程序構架01順序執行模板
    發表于 07-08 11:08 ?6次下載

    mfc程序執行流程小結,MFC程序的執行順序

     摘要:本文章主要以MFC程序的執行流程、執行順序執行過程的剖析做出的結論,下面一起來看看原文的具體介紹。
    發表于 12-08 15:48 ?9568次閱讀
    mfc程序<b class='flag-5'>執行</b>流程小結,MFC程序的<b class='flag-5'>執行</b><b class='flag-5'>順序</b>

    1433端口的SQL TOOL執行命令錯誤應該如何修復詳細說明

    然后用SQL TOOLS連接主機,進行SQL或者CMD命令執行,從而 得主機的控制權,但是服務器的管理人員通常會把一些不安全的漏洞補上,所以用sql tools直接
    發表于 11-22 16:20 ?2次下載

    如何通過explain來驗證sql執行順序

    關于 sql 語句的執行順序網上有很多資料,但是大多都沒進行驗證,并且很多都有點小錯誤,尤其是對于 select 和 group by 執行的先后
    的頭像 發表于 09-07 16:24 ?2684次閱讀
    如何通過explain來驗證<b class='flag-5'>sql</b>的<b class='flag-5'>執行</b><b class='flag-5'>順序</b>

    一條SQL語句是怎么被執行

    一直是想知道一條SQL語句是怎么被執行的,它執行順序是怎樣的,然后查看總結各方資料,就有了下面這一篇博文了。 本文將從MySQL總體架構---》查詢
    的頭像 發表于 09-12 09:44 ?1518次閱讀
    一條<b class='flag-5'>SQL</b>語句是怎么被<b class='flag-5'>執行</b>的

    sql server執行os-shell

    條件:數據庫權限必須是dba權限可利用sql-shll進行命令執行,部分常用ql語句:
    的頭像 發表于 10-24 17:42 ?2206次閱讀

    系統上線時SQL腳本的9大坑

    有些小公司,SQL腳本是開發自己執行的,有很大的風險。 有些大廠,有專業的DBA把關,但DBA也不是萬能的,還是有可能會讓一些錯誤的SQL腳本被生產環境執行了,比如:update
    的頭像 發表于 03-24 14:25 ?496次閱讀

    sql執行順序優先級是什么

    這是我們實際上SQL執行順序: 我們先執行from,join來確定表之間的連接關系,得到初步的數據 where對數據進行普通的初步的篩選
    發表于 08-18 12:37 ?1334次閱讀
    <b class='flag-5'>sql</b><b class='flag-5'>執行</b><b class='flag-5'>順序</b>優先級是什么

    sql where條件的執行順序

    SQL語句中的WHERE條件是用來篩選數據的,它決定了哪些數據會被返回給用戶。WHERE條件的執行順序是影響SQL語句性能的一個重要因素,正確地理解和優化WHERE條件的
    的頭像 發表于 11-23 11:31 ?2221次閱讀

    sql的where條件多個and順序

    SQL中,WHERE子句用于過濾查詢結果以提供符合特定條件的記錄。當有多個AND操作符時,WHERE子句的順序并不會影響查詢結果,但是正確的AND操作符順序可以提高查詢的可讀性和性能。 首先,我們
    的頭像 發表于 11-23 11:33 ?3899次閱讀

    oracle執行sql查詢語句的步驟是什么

    Oracle數據庫是一種常用的關系型數據庫管理系統,具有強大的SQL查詢功能。Oracle執行SQL查詢語句的步驟包括編寫SQL語句、解析SQL
    的頭像 發表于 12-06 10:49 ?987次閱讀

    Oracle如何執行sql腳本文件

    Oracle是一種關系型數據庫管理系統,可用于存儲、查詢和管理大量的數據。在Oracle中,可以通過執行SQL腳本文件來一次性地執行多個SQL語句或者批量處理數據。在下面的文章中,我將
    的頭像 發表于 12-06 10:51 ?6776次閱讀
    主站蜘蛛池模板: 国产色婷婷亚洲99精品| 男女床上黄色| 熟女啪啪白浆嗷嗷叫| 国产精品亚洲污污网站入口| 性色爽爱性色爽爱网站| 久久精品国产福利电影网| 97SE亚洲国产综合在线| 欧美人与动交zOZ0| 国产免费久久爱久久啪| 益日韩欧群交P片内射中文| 欧美日韩免费看| 国产亚洲精品V在线观看一| 在线看片亚洲| 日本wwwxx| 精品国产原创在线观看视频| 99热这里只有精品88| 侮辱丰满美丽的人妻| 两个奶头被吃得又翘又痛| 国产成人拍精品免费视频爱情岛| 夜色视频社区| 日本阿v直播在线| 精品高清国产a毛片| writeas雷狮直播| 亚洲色大成网站www久久九九| 免费国产福利| 国产色综合色产在线视频| 5g天天影院天天看天天爽| 我年轻漂亮的继坶2中字在线播放 我们中文在线观看免费完整版 | 国产成人mv 在线播放| 用快播看黄的网站| 无码AV毛片色欲欧洲美洲| 免费被靠视频动漫| 国内精品久久久久久西瓜色吧| write as 跳蛋| 中文国产在线观看| 亚洲 欧美 国产 综合不卡| 区一区二视频免费观看| 六级黄色片| 久久福利影院| 国产欧美一区二区精品久久久| 苍井空教师BD在线观看全集|