一 内外关联
1. 外关联:左关联(left join),返回包括左表中的所有记录和右表中联结字段相等的记录。
右关联(right join),返回包括右表中的所有记录和左表中联结字段相等的记录。
全外关联(full join),两个表的记录都返回,不联结的字段补null。
内关联:自关联(inner join),只返回两个表中联结字段相等的行。
注:外关联的英文简写中间省略了outer。
2. 对于外关联可以使用“+”来表示。
(1)“+”操作符只能出现在where子句中,并且不能与outer join语法同时使用。
(2)“+”操作符只能用于实现左、右关联,不能用于全外关联。
(3)“+”操作符不能与or和in操作符一起使用。
(4)“+”操作符只适用于列,不能用在表达式上。
(5)“+"操作符执行连接时,如果where子句中包含多个条件,则所有条件中都要包含“+”操作符。
+表示补充,哪个表有+号,该表就是匹配表。加号写在右表,表示左关联,左表全显示,右表补全,反之亦然。
二 用法实例
(1)left join
select * from A left join B on A.ID = B.ID;
select * from A a, B b where a.ID = b.ID(+);
ID | name | ID | name |
1 | a | 1 | f |
2 | b | 2 | g |
3 | c | 3 | h |
4 | d | null | null |
5 | e | 5 | i |
(2)right join
select * from A right join B on A.ID = B.ID;
select * from A a, B b where a.ID(+) = b.ID;
ID | name | ID | name |
1 | a | 1 | f |
2 | b | 2 | g |
3 | c | 3 | h |
null | null | 5 | i |
null | null | 7 | j |
null | null | 9 | k |
(3)inner join
select * from A inner join B on A.ID = B.ID;
ID | name | ID | name |
1 | a | f | |
2 | b | g | |
3 | c | h |
(4)全关联
ID | name | ID | name |
1 | a | 1 | f |
2 | b | 2 | g |
3 | c | 3 | h |
4 | d | null | null |
5 | e | 5 | i |
null | null | 7 | j |
null | null | 9 | k |