数据库理论基础(外联接)
假设有两个关系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 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回.