從2張或多張表中,取出有關聯的數據blog
關聯查詢一共有幾種狀況:io
內鏈接:INNER JOIN 、CROSS JOINtable
(1)形式一select
select 字段列表nio
from A表 inner join B表im
on 關聯條件d3
【where 其餘篩選條件】數據
說明:若是不寫關聯條件,會出現一種現象:笛卡爾積查詢
關聯條件的個數 = n - 1,n是幾張表關聯img
on只能和join一塊兒用
(2) 形式二
select 字段列表
from A表 , B表
where 關聯條件 【and 其餘篩選條件】
外鏈接:左外鏈接(LEFT OUTER JOIN)
左鏈接:
第一種結果:A
select 字段列表
from A表 left join B表
on 關聯條件
第二種結果:A - A∩B
select 字段列表
from A表 left join B表
on 關聯條件
where 從表的關聯字段 is null
右外鏈接(RIGHT OUTER JOIN)
第一種結果:B
select 字段列表
from A表 right join B表
on 關聯條件
第二種結果:B - A∩B
select 字段列表
from A表 right join B表
on 關聯條件
where 從表的關聯字段 is null
全外鏈接(FULL OUTER JOIN)
使用union實現全鏈接的效果
(1)A ∪ B
select 字段列表
from A表 left join B表
on 關聯條件
union
select 字段列表
from A表 right join B表
on 關聯條件
(3)A ∪ B - A ∩ B
select 字段列表
from A表 left join B表
on 關聯條件
where 從表的關聯字段 is null
union
select 字段列表
from A表 right join B表
on 關聯條件
where 從表的關聯字段 is null
自鏈接:當table1和table2本質上是同一張表,只是用取別名的方式虛擬成兩張表以表明不一樣的意義