數據庫理論基礎(外聯接)
數據庫理論基礎(外聯接)
假設有兩個關系R和S
在關系R和S做自然聯接時, 我們選擇兩個關系在公共屬性上值相等的元組構成新關系的元組.此時, 關系R中某些元組有可能在S中不存在公共屬性上值相等的元組, 造成R中這些元組的值在操作時被舍棄. 由于同樣的原因, S中某些元組也有可能被舍棄. 為了在操作時能保存這些被舍棄的元組, 可以采用外聯接操作.
如果R和S做自然聯接時, 把原來該舍棄的元組也保留在新關系中, 同時在這些元組新增加的屬性上填上空值(null), 這種操作稱為"外聯接"操作.
如果R和S做自然聯接時, 只把R中原來該舍棄的元組放在新關系中, 那么這種操作被稱為"左外聯接"操作.
select * from t_R left outer join t_S on t_R.B = t_S.B and t_R.C = t_S.C
如果R和S做自然聯接時, 只把S中原該舍棄的元組放到新關系中, 那么這種操作被稱為"右外聯接".
select * from t_R right outer join t_S on t_R.B = t_S.B and t_R.C = t_S.C
僅當至少有一個同屬于兩表的行符合聯接條件時,內聯接才返回行。內聯接消除與另一個表中的任何行不匹配的行。而外聯接會返回 FROM 子句中提到的至少一個表或視圖的所有行,只要這些行符合任何 WHERE 或 HAVING 搜索條件。將檢索通過左向外聯接引用的左表的所有行,以及通過右向外聯接引用的右表的所有行。完整外部聯接中兩個表的所有行都將返回.