知識點
一、表的加法
Union:刪除表中的重復值
union al:包含表中所有內容,包括重復值


二、表的聯結
聯結:join
聯結分為以下五種:
交叉聯結(cross join)又稱為笛卡爾積:將表中的每一行與另外表中的每一行聯結在一起,結果的行數為兩表行數的乘積。典型例子:撲克牌,實際業務應用較少,原因:a結果行數太多,需要花費大量運算成本和設備支持;b沒有實際價值;交叉聯結是其他聯結的基礎。

內聯結(inner join):查找出同時存在于兩組中的數據




左聯結(left join):將左側表中的數據取出來,將左側表為主表,將左側表中的數據全部取出來,右邊的表中只選出和左邊相同的學號的行。





右聯結(right join):會將右側表中的數據全部取出來




修改:left join 改為right join
全聯結(full join):在SQL中無法應用

三、聯結應用案例
1、 查詢所有學生的學號、姓名、選課數、總成績



2、 查詢平均成績大于85的所有學生的學號、姓名和平均成績




3、 查詢學生的選課情況:學號、姓名、課程號、課程名稱


四、case表達式
作用:幫助解決復雜的查詢問題,相當于進行一個條件判斷的函數,用來判斷每一行是否滿足某個條件。
在何種情況下使用:多種情況需要判斷時可以使用case表達式
注意:
1、 else子句可以省略不寫,默認為空值,建議不省略;
2、 end 子句不可省略;
3、 case表達式看寫在SQL任意子句中。







練習題
1、 查詢所有學生的學號、姓名、選課數、總成績

2、 查詢平均成績大于85的所有學生的學號、姓名和平均成績

3、 查詢學生的選課情況:學號、姓名、課程號、課程名稱

4、 查詢出每門課程的及格人數和不及格人數

5、 使用分段【100-85】,【85-70】,【70-60】,【<60】來統計各科出成績,分別統計各分段人數:課程ID和課程名稱

6、SQLzoo練習












