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