天天看點

内連接配接·外連接配接·UNION聯結UNION

聯結

内連接配接——查詢出來的結果肯定會滿足所有的條件

自連接配接

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子句