欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MYSQL聚合查詢、分組查詢、聯(lián)合查詢舉例詳解

 更新時(shí)間:2024年09月23日 08:31:01   作者:鴿鴿程序猿  
我們做的很多查詢都是橫向查詢,它們都是根據(jù)條件一行一行的進(jìn)行判斷,而使用聚合函數(shù)查詢是縱向查詢,它是對(duì)一列的值進(jìn)行計(jì)算,然后返回一個(gè)單一的值,這篇文章主要介紹了MYSQL聚合查詢、分組查詢、聯(lián)合查詢的相關(guān)資料,需要的朋友可以參考下

聚合查詢

聚合查詢就是針對(duì)表中行與行之間的查詢。

聚合函數(shù)

count()

count(列名):查詢當(dāng)前列下面有多少條數(shù)據(jù)。

select count(*) from 表名;#查詢當(dāng)前表有多少行
select count(列名) from 表名;#查詢?cè)摿杏卸嗌傩?
  • count(1),里面加個(gè)數(shù)字常量也可以達(dá)到count(*)的效果,推薦寫count(*)。
  • 使用count(列名)查詢到null時(shí)不算入行數(shù)。

sum()

把查詢到的結(jié)果相加。

select sum(列名) from 表名;#將該列所有值相加
  • 必須是數(shù)字,不是數(shù)字會(huì)報(bào)警告沒結(jié)果。
  • 使用該函數(shù)會(huì)將null不計(jì)算,不會(huì)出現(xiàn)加上null和為null的結(jié)果。

avg()

求查詢到結(jié)果的平均值。

select avg(列名/表達(dá)式) from 表名;#將該列所有值的平均數(shù)
  • 必須是數(shù)字,不是數(shù)字會(huì)報(bào)警告沒結(jié)果。
  • 使用該函數(shù)會(huì)將null那行不計(jì)算,比如1,2,null平均值為(1 + 2)/ 2 = 1.5000。

max()和min()

分別返回查到的最大值和最小值。

select max(列名) from 表名;#返回該列最大值
select min(列名) from 表名;#返回該列最小值
  • 必須是數(shù)字,不是數(shù)字會(huì)報(bào)警告沒結(jié)果。
  • null不參與。

總結(jié)

函數(shù)說明
count (列名)返回查詢到的數(shù)據(jù)的 數(shù)量
sum(列名)返回查詢到的數(shù)據(jù)的 總和,不是數(shù)字沒有意義
avg(列名)返回查詢到的數(shù)據(jù)的 平均值,不是數(shù)字沒有意義
max(列名)返回查詢到的數(shù)據(jù)的 最大值,不是數(shù)字沒有意義
min(列名)返回查詢到的數(shù)據(jù)的 最小值,不是數(shù)字沒有意義

分組查詢

group by 子句

查詢(select) 中使用 group by子句可以對(duì)指定列進(jìn)行分組查詢。
功能就是將查詢到的結(jié)果中 group by 子句后的列完全相同的合并在一起。

select 列名.... from 表名 group by 列名1, 列名2;

group by 子句后也可以跟 order by子句排序。

having 子句

group by 子句進(jìn)行分組以后,需要對(duì)分組結(jié)果再進(jìn)行條件過濾時(shí),不能使用 where語句,而需要用having。
因?yàn)榉纸M結(jié)果在結(jié)果集中是臨時(shí)表,不是真是的數(shù)據(jù),where處理的事是真實(shí)數(shù)據(jù)。

select 列名.... from 表名 group by 列名1, 列名2 having 條件;

聯(lián)合查詢

聯(lián)合查詢就是將多張表聯(lián)合起來查詢,將需要的信息一起取出來。

笛卡爾積

笛卡爾積就是將表中每行與其他表的行進(jìn)行全排列。

select .... from 表1,表2;

例如:

  • 當(dāng)使用笛卡爾積的表含有主外鍵查詢時(shí),因?yàn)槭侨帕?,必然?huì)產(chǎn)生無效數(shù)據(jù),我們就可以使用條件查詢,但是必須要使用 表名.列名。

  • 通過指定列查詢精簡(jiǎn)結(jié)果集時(shí)也需要使用 表名.列名。

  • 可以通過給表名起別名來精簡(jiǎn)SQL語句。

內(nèi)連接

兩種寫法:

select 列名 from 表1 as 別名1,表2 as 別名2 where 條件 and 其他條件;

select 列名 from 表1 as 別名1 join 表2 as 別名 on 條件 and 其他條件; 

外連接

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

如果聯(lián)合查詢,join 左側(cè)的表完全顯示我們就說是左外連接;

join右側(cè)的表完全顯示我們就說是右外連接。

select 列名 from 表1 as 別名1 right join 表2 as 別名2 on 條件;#右外連接,表2全顯示

select 列名 from 表1 as 別名1 left join 表2 as 別名2 on 條件;#左外連接,表1全顯示

自連接

自連接是指在同一張表連接自身進(jìn)行查詢。

但是必須要對(duì)表進(jìn)行起不同的別名。

select 列名 from 表名 as 別名1,表名 as 別名2 where 條件 and 其它條件;

select 列名 from 表名 as 別名1 join 表名 as 別名2 on 條件 and 其它條件;

子查詢

子查詢是指嵌入在其他sql語句中的select語句,也叫嵌套查詢。

select 列名 from 表名 where 列 = (select語句 );#例子

單行子查詢

作為條件的子查詢語句返回值只有一行數(shù)據(jù)。

多行子查詢

作為條件的子查詢語句返回值有多行行數(shù)據(jù)。

  • 可以使用in來處理:

  • 可以使用多列包含:
    將where條件括號(hào)中與返回值一一進(jìn)行比較

  • 使用[not] exists關(guān)鍵字
select 列名 from 表名 where exists (select語句);

后面查詢語句返回結(jié)果集為空就不執(zhí)行前面的查詢語句,反之不為空?qǐng)?zhí)行。

from子句使用子查詢

在from子句中使用子查詢:子查詢語句出現(xiàn)在from子句中。
把一個(gè)子查詢當(dāng)做一個(gè)臨時(shí)表使用。

合并查詢

為了合并多個(gè)select的執(zhí)行結(jié)果,可以使用集合操作符 union,union all。
使用union 和union all時(shí),前后查詢的結(jié)果集中,字段需要一致。

  • union操作符用于取得兩個(gè)結(jié)果集的并集。當(dāng)使用該操作符時(shí),
    會(huì)自動(dòng)去掉結(jié)果集中的重復(fù)行。
  • union all 操作符用于取得兩個(gè)結(jié)果集的并集。當(dāng)使用該操作符時(shí),不會(huì)去掉結(jié)果集中的重復(fù)行。

總結(jié) 

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

相關(guān)文章

最新評(píng)論