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中存在,能查到,這種稱爲右連接。