第一部分:表的加法
- 合并去重後的表:union
- 合并保留重複行的表:union all

文氏圖:加法 union
第二部分:表的聯結
- 交叉聯結-cross join on :笛卡爾積-表1 n行n列,表2 m行m列- 表1和表2 聯結成n+m行n*m列
- 内聯結-inner join on :查找出同時存在兩張表中的資料。先取出符合條件的行,然後交叉聯結。
- 外聯結:左聯結-left join 和右聯結- right join
- 左聯結:以左邊的表為主表,先把左表全部取出,再取出右邊符合條件的行,最後交叉聯結。
- 右聯結:以右邊的表為主表,先把右表全部取出,再取出左邊符合條件的行,最後交叉聯結。
- 全聯結:full join: 傳回左表和右表中的所有行,若某行和另一個表有比對的行,則此行會合并,其他不比對的則傳回對應的行。
内聯結-inner join
左聯結-left join
左聯結不包含公共部分
第三部分:聯結應用案例
左聯結應用
第四部分:case表達式
case when <>ther<>---------------------1
when <>ther<>---------------------2
when <>ther<>
.................
else<>
end
滿足1 執行end, 若1 不滿足,會執行2,2滿足,執行end,2若不滿足,則以此類推,運作.......
總結:
- 以行為機關對表進行聯結-union(并集)intersect(交集)except(差集)
-
- union -并集 union all--保留重複行--------------------------------增加記錄行數
- intersect-交集-應用于兩張表,選取出它們當中的公共記錄-----------減少記錄行數
- except-差集-A-B:選取A中除去AB交集部分------------------------------減少記錄行數
-
集合運算就是對滿足同一規則的記錄進行加減等四則運算,通過集合運算可以得到兩個表中記錄的集合或者公共記錄的集合,又或者其中某個表的記錄的集合。
集合運算注意事項:
-
- 集合運算符會除去重複的記錄
- 作為運算對象的記錄的列數必須相同
- 作為運算對象的記錄中列的類型必須一緻
- 可以使用任何select語句,但是order by子句隻能 在最後使用一次
- 以列為機關對表進行聯結-inner join(内聯結),outer join(外聯結),cross join(交叉聯結)
- inner join(内聯結)----選取同時存在兩張表中的資料
- outer join(外聯結)----隻要資料存在某一張表中就能讀取出來,------可以得到固定行數的結果。分為左連接配接和右連接配接-區分主表
- cross join(交叉聯結)----笛卡爾積,兩張表中行數的乘積。
進行聯結時需要在FROM子句中使用多張表;進行内連接配接時必須使用ON子句,并且書寫在from和where之間;使用聯結時select子句中的列需要按照<表的列名>.<别名>的格式進行書寫。
複習sql的運作順序:
from- where- group by- having- select- order by- limit