1、表的加法
select`.... from 表1 union select ...... from 表2;
union all 會保留兩個表的重複行
2、表的聯結
(1)交叉連接配接(cross join)
(2)内聯結(inner join): 保留兩個表相同部分
(3)左聯結(left join):保留左邊表的全部和兩個表相同的部分
(4)右聯結(left join):保留右邊表的全部和兩個表相同的部分
(5)全聯結(mysql不支援)
各種聯結形式總結如下:
圖檔來源:猴子知乎Live講座《從零學會SQL:多表查詢》
三、如何用sql解決業務問題
思路:翻譯成大白話(了解業務需要解決什麼問題)->寫出分析思路->寫出對應sql子句
例題
1、查詢所有學生的學号、姓名、選課數、總成績
圖檔來源:猴子知乎Live講座《從零學會SQL:多表查詢》
2、查詢平均成績大于85的所有學生的學号、姓名和平均成績
圖檔來源:猴子知乎Live講座《從零學會SQL:多表查詢》
3、查詢學生的選課情況:學号,姓名,課程号,課程名稱(三表聯結)
圖檔來源:猴子知乎Live講座《從零學會SQL:多表查詢》
四、case表達式
case when<判斷表達式>then<表達式>
when<判斷表達式>then<表達式>
when<判斷表達式>then<表達式>
..... else <表達式>
end
例題:
1、查詢出每門課程的及格人數和不及格人數
圖檔來源:猴子知乎Live講座《從零學會SQL:多表查詢》
2、使用分段[100-85],[85-70],[70-60],[<60]來統計各科成績,分别統計各分數段人數,課程号,課程名稱。
圖檔來源:猴子知乎Live講座《從零學會SQL:多表查詢》
五、練習(sqlzoo)