【MySQL進階學習】聚合函數與join多表查詢

聚合函數


sum求和

sum(字段名) as 別名, 最好起個別名

求和就是求這一系列數據的總和。
例:
查詢學號爲150101學生的總成績。
sum求和

avg平均數

avg(字段名) as 別名,

平均數就是求這一系列數據的平均數。
例:
查詢學號爲150101學生的平均成績。
avg平均數

max最大值

max(字段名) as 別名,

最大值就是求這一系列數據的最大值。
例:
查詢學號爲150101學生的單科最高成績。
max最大值

min最小值

min(字段名) as 別名,

最小值就是求這一系列數據的最小值。
例:
查詢學號爲150101學生的單科最低成績。
min最小值

year求年齡

year(now()) - year(字段名),

就是用當前時間減去數據的時間就是年齡。
例:
查詢學生的年齡。
year求年齡

count查詢數據個數

count(字段名或者*), 

就是查詢這系列數據有幾個,一般配合分組使用,可以把count裏面的字段名改成*,也是一樣的。需要加條件,清除多餘需要在count裏面加。

例:
查詢學生有幾個是河北保定。
count查詢數據個數

group by分組

group by 字段名;

統計什麼字段,就需要select哪個字段,和查詢函數一起用。
例:
查詢學生表各地有多少人。
group by分組

with rollup數據總彙

尾部添加with rollup;

用於總彙數據,看看一共有多少。
例:
查詢學生表各地有多少人,並且查看一共有多少學生。
with rollup數據總彙

having分組篩選

group by
	條件
having
	條件表達式;	

用於進行篩選完的條件再進行進一步篩選。
例:
查詢學生表各地學生爲一人的地方。
having數據篩選

join多表查詢

join是對笛卡爾積的結果進行不同的操作


inner join內連接

例如:select * from A,B where A.ID=B.ID;
例如:select * from A inner join B on A.ID = B.ID;
格式:select * from 表名 inner join 另外表名 on 表名.相同的字段名 = 另外表名.相同的字段名,
可以簡化成using(相同的字段名)
格式:select * from 表名 inner join 另外表名 using(相同的字段名)

就是對笛卡爾積的結果進行等值處理,就是把沒有用的信息排掉,字段名後面可以添加自己命名的名字。
例:
查詢每個學生的所在班級。
內連接

[outter] join外連接

外連接分爲左外連接與右外連接,一般叫左連接和右連接,就是左右方向不同,一般outter都不寫

left [outer] join左連接
select * from 字段名1 left join 字段名 on 字段名1.ID = 字段名2.ID;

左連接爲指向左邊的數據表,基於左邊數據表來進行書寫,只要左邊有的數據,新生成的臨時表裏也有什麼,如果另外一個表沒有與之對應,則爲空。
例:
查詢所有人的成績,要求輸出無效成績。
left join左連接

right [outer] join右連接

和左連接一樣,詳情參考左連接。
嘿嘿

交叉連接(笛卡爾積)
select *
from
    表名,表名....
[where]
    連接方式 and|or 條件

第一個表的第一個數據與第二個表中的每個數據建立聯繫,第一個表中的第二個數據與第二個表中的數據建立聯繫,直到第一個表中的所有數據與表二建立完關係就可以了。如果想清除多餘數據,就需要使用內連接,或者外連接了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章