亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL數(shù)據(jù)庫聚合查詢和聯(lián)合查詢詳解

 更新時間:2024年03月06日 10:13:32   作者:晚餐是PM  
聚合查詢就是在一個表里通過聚合函數(shù)進(jìn)行查詢操作,通常是求和,求平均值等操作,這篇文章主要介紹了MySQL聚合查詢和聯(lián)合查詢的相關(guān)資料,需要的朋友可以參考下

聚合查詢:

下文中的所有聚合查詢的示例操作都是基于此表:

聚合函數(shù)

聚合函數(shù)都是行與行之間的運(yùn)算。

count()

select count(列名) from 表名;

統(tǒng)計(jì)該表中該列的行數(shù),但是 null 值不會統(tǒng)計(jì)在內(nèi),但是如果寫為 count(*) 那么 null 也會算進(jìn)去(就算一整行都是 null 也會算進(jìn)去

例如我們暫時使用這個表進(jìn)行演示:

此表有一行全為空

sum()

select sum(列名) from 表名;

只能針對數(shù)字類型使用,也可以對多列進(jìn)行相加求一個總和;

對該表中的math列的值進(jìn)行求和。

注:會將 null 值排除在外,不予計(jì)算。

avg()

select avg(列名) from 表名;

對該表中的該列進(jìn)行求平均值。

只能針對數(shù)字類型使用

注:會將 null 值排除在外,不予計(jì)算。

max()

select max(列名) from 表名;

求出該表中該列的最大值。

只能針對數(shù)字類型使用

注:會將 null 值排除在外,不予計(jì)算。

min()

select min(列名) from 表名;

求出該表中該列的最小值。

只能針對數(shù)字類型使用

注:會將 null 值排除在外,不予計(jì)算。

group by

group by 可以實(shí)現(xiàn)對數(shù)據(jù)進(jìn)行分組

一般的使用方法都是先用  group by 進(jìn)行分組,然后再利用聚合函數(shù)進(jìn)行聚合查詢。

select * from 表名 group by 列名;

group by 會將該列中值相同的分為一組。因?yàn)?strong>沒有使用order by 進(jìn)行排序操作所以MySQL并不會對查詢結(jié)果的順序做出保證。

此時我們在原有表的基礎(chǔ)上再加一行數(shù)據(jù)。

加入該條數(shù)據(jù)后該表變成了:

此時再進(jìn)行分組查詢操作:

此時因?yàn)闆]有使用聚合函數(shù)所以 張三這一行 只是在張三這一組中選了一個代表。

如果加入聚合函數(shù)就可以很清楚的看到,聚合函數(shù)會以每組為單位進(jìn)行操作

此時如果我們不想讓某行(某幾行)參與分組就可以在 group by 之前加入 where 進(jìn)行條件篩選。

select * from 表名 where 條件 group by 列名;

例:此時我們不想讓 null 這個空值和 math=100 的行參與分組 

注意:where 條件 必須在 group by 之前

在后面就會報(bào)錯。

having

having 其實(shí)和 where 差不多都是進(jìn)行條件篩選的語句。

group by 子句進(jìn)行分組以后,需要對分組結(jié)果再進(jìn)行條件過濾時,不能使用 where 語句,而需要用 having

having是對分組之后的數(shù)據(jù)進(jìn)行篩選的。

例:此時我們不想讓 null 這個空值和 成績=100 的行參與分組 

此時的語句執(zhí)行順序?yàn)椋?/p>

所以 having 子句中的條件一定要和 select 中的對應(yīng)

注:having 必須寫在 group by 子句之后。

聯(lián)合查詢:

實(shí)際開發(fā)中往往數(shù)據(jù)來自不同的表,所以需要多表聯(lián)合查詢。

多表查詢的關(guān)鍵是對多張表的數(shù)據(jù)取笛卡爾積:

下面我先簡單介紹一下笛卡爾積,假設(shè)我們現(xiàn)在有如下的兩張表。而對他們的數(shù)據(jù)取笛卡爾積就是用第一個表的每行數(shù)據(jù)分別與第二張表的每行數(shù)據(jù)進(jìn)行組合。 

這兩張表進(jìn)行笛卡爾積之后就變成了一個 9 行 4 列的新表,如圖所示

這就是對兩個表進(jìn)行去取笛卡爾積的結(jié)果。

但是,我們很容易就可以發(fā)現(xiàn)這里面有非常多的所謂的非法數(shù)據(jù),

從圖中我們可以看到只有三條數(shù)據(jù)是合法的,而我們再進(jìn)行數(shù)據(jù)庫操作的時候肯定不能允許有這么多的非法數(shù)據(jù)出現(xiàn)在查詢結(jié)果中,此時我們就可以通過尋找兩張表的關(guān)聯(lián)屬性來通過 where 條件來進(jìn)行篩選,比如上面的表就可以通過設(shè)置兩張表的班級相同來進(jìn)行篩選。

內(nèi)連接

內(nèi)連接其實(shí)就是在多張表中求交集(或者說就是最終查詢的結(jié)果中的每條數(shù)據(jù)的鏈接條件都存在于原本的多張表中)。

此處為了更好的演示,我先創(chuàng)建了三張表

內(nèi)連接的語句就這兩條: 

select 字段 from 表1  [inner] join 表2  on 連接條件 and 其他條件;

select 字段 from 表1 ,表2  where 連接條件 and 其他條件;

上面這些格式看著很復(fù)雜其實(shí)完全沒有必要記這些。只要按照下面這些步驟一步一步的多練習(xí)幾次就能掌握。

內(nèi)連接本質(zhì)上分為以下幾步:

例:查詢凌華的各科成績。

第一步:先求出笛卡爾積

select * from 表一,表二,……

通過上述語句就可以求出多張表的笛卡爾積。

此時一共輸出了27條數(shù)據(jù)。

第二步:加上連接條件,篩選出合法信息

此處推薦再寫where中的條件時,使用 表名 點(diǎn) 列名 的寫法因?yàn)楸碇锌赡軙邢嗤牧忻?/p>

第三步:結(jié)合需求進(jìn)一步增加條件,對結(jié)果進(jìn)行篩選;

此處需要增加的條件就是名字是凌華。

第四步:對列進(jìn)行精簡,篩選出需要展示的列

此時你再對照開頭的表達(dá)式就會發(fā)現(xiàn)一摸一樣,基本上所有的內(nèi)連接都可以套用這四大步。

select 字段 from 表1  [inner] join 表2  on 連接條件 and 其他條件;

select 字段 from 表1 ,表2  where 連接條件 and 其他條件;

注:第一條語句中的 [inner] join 中的 inner 之所以用 [] 括起來是因?yàn)?/strong>可以省略不寫。

外連接

如果多張表中的信息都存在對應(yīng)關(guān)系那么內(nèi)連接和外連接的結(jié)果就都是一樣的,如果表中的數(shù)據(jù)不對應(yīng)內(nèi)外連接就會出現(xiàn)差別。

外連接分為左外連接和右外連接。

例:有如下兩張數(shù)據(jù)沒有完全對應(yīng)的表

左外連接

select 字段 from 表1  left join 表2 on 連接條件 and 其他條件;

這個表達(dá)式除了 left 之外和內(nèi)連接都是相同的。

左外連接就是以左表為基礎(chǔ),如果左表有右表沒有那么就用 null 代替。

右外連接

select 字段 from 表1  right join 表2 on 連接條件 and 其他條件;

這個表達(dá)式除了 right 之外和左外連接都是相同的。

右外連接就是以右表為基礎(chǔ),如果右表有左表沒有那么就用 null 代替。

自連接

自連接就是自己和自己取笛卡爾積,和內(nèi)連接的解題方法相同。

注:在自連接中必須要給表取別名否則會報(bào)錯。

自連接的優(yōu)點(diǎn):可以將行與行之間的關(guān)系轉(zhuǎn)換成列與列。

例:在上述表中查詢出 C++ 成績大于單片機(jī)成績的人。

子查詢

子查詢本質(zhì)上就是‘套娃’,就是將多個簡單的sql語句嵌套成一個復(fù)雜的sql語句。 

例:查找出名為可莉的學(xué)生在幾年級。

1.先找出可莉的班級號

2.根據(jù)班級號在班級表中找到班級名

而子查詢就是將這兩句sql語句嵌套起來

合并查詢

合并查詢是通過 union 來實(shí)現(xiàn)的

在MySQl中可以通過 union 來將多個表的查詢結(jié)果合并成一張表。

注:合并的兩個結(jié)果的對應(yīng)列之間列數(shù)和數(shù)據(jù)類型必須相同(列名系統(tǒng)會自動按照第一個表的列名),union 會去掉結(jié)果中的重復(fù)項(xiàng)。

例如查詢這兩張表中的 id 和 name 結(jié)果返回一張表;

在這張結(jié)果中只有一個 id = 1 的學(xué)生。

如果你不想對結(jié)果進(jìn)行去重處理,就可以使用 union all 

如果對同一張表使用 union 那么它的結(jié)果會和使用 or 相同。

總結(jié) 

到此這篇關(guān)于MySQL數(shù)據(jù)庫聚合查詢和聯(lián)合查詢的文章就介紹到這了,更多相關(guān)MySQL聚合查詢和聯(lián)合查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL8.0.32安裝及環(huán)境配置過程

    MySQL8.0.32安裝及環(huán)境配置過程

    這篇文章主要介紹了MySQL8.0.32安裝以及環(huán)境配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • mysql的udf編程之非阻塞超時重傳

    mysql的udf編程之非阻塞超時重傳

    這篇文章主要介紹了mysql udf編程的非阻塞超時重傳示例,需要的朋友可以參考下
    2014-03-03
  • mysql啟動提示:錯誤2系統(tǒng)找不到指定文件的解決方案

    mysql啟動提示:錯誤2系統(tǒng)找不到指定文件的解決方案

    這篇文章主要給大家介紹了mysql啟動提示:錯誤2系統(tǒng)找不到指定文件的解決方案,文中通過圖文結(jié)合的方式給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Mysql索引分類及其使用實(shí)例詳解

    Mysql索引分類及其使用實(shí)例詳解

    數(shù)據(jù)庫的索引就像一本書的目錄,能夠加快數(shù)據(jù)庫的查詢速度,MYSQL索引有四種PRIMARY、INDEX、UNIQUE、FULLTEXT,?其中PRIMARY、INDEX、UNIQUE是一類,F(xiàn)ULLTEXT是一類,本文給大家介紹Mysql索引分類及其使用實(shí)例,感興趣的朋友一起看看吧
    2022-07-07
  • MySQL 重裝MySQL后, mysql服務(wù)無法啟動

    MySQL 重裝MySQL后, mysql服務(wù)無法啟動

    把mysql程序卸載后, 重裝, 結(jié)果mysql服務(wù)啟動不了,碰到這個問題的朋友可以參考下。
    2011-08-08
  • MySQL的DELETE刪除數(shù)據(jù)示例詳解

    MySQL的DELETE刪除數(shù)據(jù)示例詳解

    MySQL的DELETE語句用于從數(shù)據(jù)庫表中刪除記錄,本文將詳細(xì)介紹DELETE語句的基本語法、高級用法、性能優(yōu)化策略以及注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情

    MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情

    這篇文章主要介紹了MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情,文章通過實(shí)際案例,從代碼實(shí)戰(zhàn)的角度來實(shí)現(xiàn)這樣的一個數(shù)據(jù)權(quán)限。具體詳細(xì)介紹,具有一定的參考價值
    2022-08-08
  • MySQL數(shù)據(jù)庫表被鎖、解鎖以及刪除事務(wù)詳解

    MySQL數(shù)據(jù)庫表被鎖、解鎖以及刪除事務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫表被鎖、解鎖以及刪除事務(wù)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • MySql 5.7.17免安裝配置教程詳解

    MySql 5.7.17免安裝配置教程詳解

    這篇文章給大家詳細(xì)介紹了MySql 5.7.17免安裝配置教程,首先大家需要先下載mysql 5.7.17 的安裝包,然后解壓,具體配置過程大家通過本文一起學(xué)習(xí)吧
    2017-03-03
  • MySQL索引用法實(shí)例分析

    MySQL索引用法實(shí)例分析

    這篇文章主要介紹了MySQL索引用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了mysql索引的功能、定義、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-07-07

最新評論