聯結
内連接配接——查詢出來的結果肯定會滿足所有的條件
自連接配接
select p1.prod_id,p1.prod_name
from product AS p1,product AS p2
where p1.vend_id = p2.vend_id and p2.prod_id = 'DNTRY'
自然連接配接——兩張表中的名稱和類型完全一緻的列進行内連接配接
- 自然連接配接不必指定任何連接配接條件,自動連接配接兩張表中相同名稱的所有列。
- 如果兩張表中有相同名字的列,但是資料類型不一緻,如果能隐式轉換,則能正常連接配接,但如果隐式轉換不成功,則報錯。
- 使用自然連接配接時,不能使用表名或表的别名修飾列。
select * from emp natural join dept;
外連接配接——查詢出來的結果存在不滿足條件的可能
左/右外連接配接(全外連接配接 mysql不支援)
select columns from table1 left/right join table2 on table1.col = table2.col;
笛卡兒積(cartesian product)
由沒有聯結條件的表關系傳回的結果為笛卡兒積。檢索出的行的數目将是第一個表中的行數乘以第二個表中的行數。
UNION
- 至少2個select
- 2個select查詢列數一緻,順序不要求
- 資料類型相容
UNION查詢結果,預設情況——重複的行被自動取消
若要結果包含重複行,使用UNION ALL
如果确實需要每個條件的比對行全部出現(包括重複行),則必須使用UNION ALL而不是WHERE
結果排序
* 在用UNION組合查詢時,隻能使用一條ORDER BY子句,它必須出現在最後一條SELECT語句之後。
* 對于結果集,不存在用一種方式排序一部分,而又用另一種方式排序另一 部分的情況
* 是以不允許使用多條ORDER BY子句