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

深度圖解 SQL 執(zhí)行順序,一目了然!

數(shù)據(jù)庫(kù)
大家好,今天我們通過(guò)圖片深度了解 SQL 的執(zhí)行順序,讓我們一目了然 SQL 最怎樣執(zhí)行的!

大家好,今天來(lái)看看sql最怎樣執(zhí)行的。

這是一條標(biāo)準(zhǔn)的查詢語(yǔ)句:

這是我們實(shí)際上SQL執(zhí)行順序:

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

數(shù)據(jù)的關(guān)聯(lián)過(guò)程

數(shù)據(jù)庫(kù)中的兩張表:

from&join&where

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

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

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

選擇多張表,用where做關(guān)聯(lián)條件:

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

我們會(huì)得到滿足關(guān)聯(lián)條件的兩張表的數(shù)據(jù),不加關(guān)聯(lián)條件會(huì)出現(xiàn)笛卡爾積。

 

group by

按照我們的分組條件,將數(shù)據(jù)進(jìn)行分組,但是不會(huì)篩選數(shù)據(jù)。

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

 

having&where

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

  • 使用where再group by:先把不滿足where條件的數(shù)據(jù)刪除,再去分組
  • 使用group by再having:先分組再刪除不滿足having條件的數(shù)據(jù),這兩種方法有區(qū)別嗎,幾乎沒(méi)有!

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

不同的是,having語(yǔ)法支持聚合函數(shù),其實(shí)having的意思就是針對(duì)每組的條件進(jìn)行篩選。我們之前看到了普通的篩選條件是不影響的,但是having還支持聚合函數(shù),這是where無(wú)法實(shí)現(xiàn)的。

當(dāng)前數(shù)據(jù)分組情況:

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

select

分組結(jié)束之后,我們?cè)賵?zhí)行select語(yǔ)句,因?yàn)榫酆虾瘮?shù)是依賴于分組的,聚合函數(shù)會(huì)單獨(dú)新增一個(gè)查詢出來(lái)的字段,這里用紫色表示,這里我們兩個(gè)id重復(fù)了,我們就保留一個(gè)id,重復(fù)字段名需要指向來(lái)自哪張表,否則會(huì)出現(xiàn)唯一性問(wèn)題。最后按照用戶名去重。

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

將各組having之后的數(shù)據(jù)再合并數(shù)據(jù)。

 order by

最后我們執(zhí)行order by 將數(shù)據(jù)按照一定順序排序,比如這里按照id排序。如果此時(shí)有l(wèi)imit那么查詢到相應(yīng)的我們需要的記錄數(shù)時(shí),就不繼續(xù)往下查了。

limit

記住limit是最后查詢的,為什么呢?假如我們要查詢年級(jí)最小的三個(gè)數(shù)據(jù),如果在排序之前就截取到3個(gè)數(shù)據(jù)。實(shí)際上查詢出來(lái)的不是最小的三個(gè)數(shù)據(jù)而是前三個(gè)數(shù)據(jù)了,記住這一點(diǎn)。

我們?nèi)绻鹟imit 0,3竊取前三個(gè)數(shù)據(jù)再排序,實(shí)際上最少工資的是2000,3000,4000。你這里只能是4000,5000,8000了。

責(zé)任編輯:趙寧寧 來(lái)源: 技術(shù)老男孩
相關(guān)推薦

2023-11-10 08:56:49

Springboot常用的注解

2010-01-26 08:58:17

Windows 7啟動(dòng)時(shí)間

2010-03-10 09:06:58

Windows 7啟動(dòng)時(shí)間

2015-03-22 06:25:23

監(jiān)控寶云智慧

2015-07-03 09:41:05

腳本編程編程語(yǔ)言比較

2009-11-24 18:20:16

曙光Gridview管理

2020-09-27 09:41:04

代碼開(kāi)發(fā)注釋

2012-04-25 09:17:41

Google DrivMicrosoft SDropbox

2023-10-07 09:34:03

數(shù)據(jù)可視化

2020-12-30 10:28:49

Windows 功能系統(tǒng)

2021-01-12 16:28:41

5G運(yùn)營(yíng)商韓國(guó)

2009-09-28 16:39:37

2014-08-21 11:12:01

QQ瀏覽器

2021-03-12 14:06:03

谷歌代碼開(kāi)發(fā)

2020-08-26 16:33:25

軟件視頻會(huì)議

2023-09-27 23:32:46

Python監(jiān)控進(jìn)程

2020-04-17 15:03:28

動(dòng)圖Git命令

2020-08-19 17:31:03

誤差科學(xué)測(cè)量可視化

2021-12-14 05:57:42

微軟Edge瀏覽器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人免费网视频 | 国产 欧美 日韩 一区 | 欧美一区二区三区在线观看视频 | 亚洲一区影院 | 欧美一级在线观看 | 国产精品成人国产乱一区 | 一区在线观看 | 国产视频精品在线观看 | 成人在线视频免费看 | 久久久青草婷婷精品综合日韩 | 国产精品日韩欧美一区二区三区 | 国产日韩精品一区二区 | 午夜影晥 | 久久久www成人免费精品 | 无码国模国产在线观看 | 综合久久色 | 久久成人午夜 | 欧美一级特黄aaa大片在线观看 | 亚洲三区在线 | 一区欧美| 国产激情在线看 | 亚洲精品电影在线观看 | 免费看国产片在线观看 | 伊人色综合久久久天天蜜桃 | 久久久www| 国产免费一区二区 | 成人亚洲精品久久久久软件 | www.国产精品 | 福利视频二区 | 国产成人精品综合 | 精品久久久久久久久久 | 成人精品免费视频 | 国产女人与拘做受视频 | 成人在线视频免费观看 | 国产馆 | 国产精品精品视频 | 欧美伊人 | 综合色婷婷| 中文字幕在线视频免费观看 | 亚洲精品久久久久久久久久久 | 国产四区 |