MySQL中查詢的進階之group by子句,聯合查詢和內連接,外連接

1.group by子句

把得到的查詢結果集按一定規則進行分組
在這裏插入圖片描述
在這裏插入圖片描述
a》查詢每個崗位對應平均工資,最高工資,最低工資
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

group by也可以結合一些條件對數據進一步篩選,不是使用where,而是having.
在這裏插入圖片描述

b》查找所有平均工資高於250的崗位和平均工資。

2.聯合查詢/多表查詢

機制:笛卡爾積

就是多張表中的每個數據分別進行排列組合之後的結果。

多表查詢的過程,就是先計算出多個表的笛卡爾積,在針對這個結果基於一些條件去篩選。

如果針對兩個大表進行查詢,笛卡爾積的計算開銷會很大,最終查找效率也會變低,所以不應該在生產環境對大表進行聯合查詢。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
a》查找名字爲許仙的同學的所有成績。
1>先求出兩表笛卡爾積
在這裏插入圖片描述
2>學生id必須相對應
在這裏插入圖片描述
3>找出名字爲許仙的同學
在這裏插入圖片描述
多表查詢另一種寫法,join on
在這裏插入圖片描述
進行多表查詢時,寫列時要寫爲[表名].[列名]

b》查找所有同學的總成績,以及該同學的基本信息。
1>求出兩表笛卡爾積

2>學生id必須相對應

3>按id進行group by,求每個同學總成績
在這裏插入圖片描述
c》查詢所有同學的每一科成績,和同學相關信息
顯示同學姓名,科目名稱,對應成績
1>求出三表的笛卡爾積

2>學生id,課程id 都要相對應
在這裏插入圖片描述
3>保留自己關心的列
在這裏插入圖片描述

內連接:
在兩個表進行笛卡爾積後的結果,一定是在兩個表中都出現過的記錄

外連接:
1>如果有些數據在表1中存在,在表2中不存在,能查到
在表1中不存在,在表2中存在,查不到,這種稱爲左連接。
2>如果有些數據在表1中存在,在表2中不存在,查不到
在表1中不存在,在表2中存在,能查到,這種稱爲右連接。

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