outer和left outer join有什麼區別?

連接類型


SQL提供了多種類型的連接方式,它們之間的區別在於:從相互交疊的不同數據集合中選擇用於連接的行時所採用的方法不同。
連接類型 定義


內連接 只連接匹配的行
左外連接 包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行),以及右邊表中全部匹配的行
右外連接 包含右邊表的全部行(不管左邊的表中是否存在與它們匹配的行),以及左邊表中全部匹配的行
全外連接 包含左、右兩個表的全部行,不管另外一邊的表中是否存在與它們匹配的行。
(H)(theta)連接 使用等值以外的條件來匹配左、右兩個表中的行
交叉連接 生成笛卡爾積-它不使用任何匹配或者選取條件,而是直接將一個數據源中的每個行與另一個數據源的每個行都一一匹配
在INFORMIX中連接表的查詢
如果FROM子句指定了多於一個表引用,則查詢會連接來自多個表的行。連接條件指定各列之間(每個表至少一列)進行連接的關係。因爲正在比較連接條件中的列,所以它們必須具有一致的數據類型。
SELECT語句的FROM子句可以指定以下幾種類型的連接
FROM子句關鍵字 相應的結果集
CROSS JOIN 笛卡爾乘積(所有可能的行對)
INNER JOIN 僅對滿足連接條件的CROSS中的列
LEFT OUTER JOIN 一個表滿足條件的行,和另一個表的所有行
RIGHT OUTER JOINLEFT相同,但兩個表的角色互換
FULL OUTER JOIN LEFT OUTER 和 RIGHT OUTER中所有行的超集

 

內連接(Inner Join
內連接是最常見的一種連接,它也被稱爲普通連接,而E.FCodd最早稱之爲自然連接。

select *
from   t_institution i
inner join t_teller t
on i.inst_no = t.inst_no
where i.inst_no = "5801"

 

等價於早期的連接語法
select *
from t_institution i, t_teller t
where i.inst_no = t.inst_no
and i.inst_no = "5801"


其中inner可以省略。
等價於早期的連接語法

 

左外連接(Left Outer Jion)
select *
from   t_institution i
left outer join t_teller t
on i.inst_no = t.inst_no
其中outer可以省略

 

右外連接(Rigt Outer Jion)
select *
from   t_institution i
right outer join t_teller t
on i.inst_no = t.inst_no

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章