知識點 一、表的加法 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練習