成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度圖解 SQL 執行順序,一目了然!

數據庫
大家好,今天我們通過圖片深度了解 SQL 的執行順序,讓我們一目了然 SQL 最怎樣執行的!

大家好,今天來看看sql最怎樣執行的。

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

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

  • 我們先執行from,join來確定表之間的連接關系,得到初步的數據
  • where對數據進行普通的初步的篩選
  • group by 分組
  • 各組分別執行having中的普通篩選或者聚合函數篩選。
  • 然后把再根據我們要的數據進行select,可以是普通字段查詢也可以是獲取聚合函數的查詢結果,如果是集合函數,select的查詢結果會新增一條字段
  • 將查詢結果去重distinct
  • 最后合并各組的查詢結果,按照order by的條件進行排序

數據的關聯過程

數據庫中的兩張表:

from&join&where

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

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

from table1 join table2 on table1.id=table2.id

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

from table1,table2 where table1.id=table2.id

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

 

group by

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

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

 

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無法實現的。

當前數據分組情況:

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

select

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

select employee.id,distinct name,salary, avg(salary)

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

 order by

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

limit

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

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

責任編輯:趙寧寧 來源: 技術老男孩
相關推薦

2023-11-10 08:56:49

Springboot常用的注解

2010-01-26 08:58:17

Windows 7啟動時間

2010-03-10 09:06:58

Windows 7啟動時間

2015-03-22 06:25:23

監控寶云智慧

2009-11-24 18:20:16

曙光Gridview管理

2015-07-03 09:41:05

腳本編程編程語言比較

2020-09-27 09:41:04

代碼開發注釋

2012-04-25 09:17:41

Google DrivMicrosoft SDropbox

2023-10-07 09:34:03

數據可視化

2020-12-30 10:28:49

Windows 功能系統

2014-08-21 11:12:01

QQ瀏覽器

2009-09-28 16:39:37

2021-01-12 16:28:41

5G運營商韓國

2023-09-27 23:32:46

Python監控進程

2021-03-12 14:06:03

谷歌代碼開發

2020-08-26 16:33:25

軟件視頻會議

2020-08-19 17:31:03

誤差科學測量可視化

2020-04-17 15:03:28

動圖Git命令

2021-12-14 05:57:42

微軟Edge瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久新| 欧美日韩在线一区二区三区 | 久久久性色精品国产免费观看 | 青青久久 | 国产97视频在线观看 | 国产精品一区二区无线 | 爱综合| 综合中文字幕 | cao在线 | 91麻豆精品国产91久久久资源速度 | 欧美三区在线观看 | 天堂在线www | 国内自拍视频在线观看 | 一区二区三区在线免费观看视频 | 国产成人久久 | 亚洲三区在线 | 午夜欧美a级理论片915影院 | 亚洲综合在线一区二区 | 国产精品视频入口 | 午夜在线精品 | 国产精品一二三区 | 亚洲成人免费观看 | 少妇久久久久 | 国产亚洲一区二区三区 | 青青草社区 | 欧美激情免费在线 | 久久99国产精品 | 风间由美一区二区三区在线观看 | 免费黄色录像视频 | 亚洲欧美日韩精品久久亚洲区 | 国产精品自产av一区二区三区 | 国产高清久久 | 久久精品国产99国产精品 | 91精品久久久久久久久久小网站 | 亚洲精品一区久久久久久 | 色综合视频 | 日韩欧美三级电影在线观看 | 欧美婷婷 | 2一3sex性hd| 欧美婷婷| 天天操天天拍 |