外连接(outer join)
而外连接就不一样,以左外连接为例(右外连接类似),它除了显示符合连接条件的记录以外,还会显示所有左表中的记录(右外连接就是所有右表中的记录)。
左连接即左外连接,显示左边表的所有行,用left join
右连接即右外连接,显示右边表的所有行,用right join
全连接,返回左边表与右边表的所有记录,没有对应的用NULL表示, 用full join
create table test111 (id number,name varchar2(20));
create table test222 (id number,name varchar2(20));
insert into test111 values(111,'aaa');
insert into test111 values(222,'bbb');
insert into test111 values(444,'ddd');
insert into test222 values(222,'bbb');
insert into test222 values(333,'ccc');
insert into test222 values(444,'eee');
insert into test222 values(444,'fff');
select * from test111,test222;
111 aaa 222 bbb
111 aaa 333 ccc
111 aaa 444 eee
111 aaa 444 fff
222 bbb 222 bbb
222 bbb 333 ccc
222 bbb 444 eee
222 bbb 444 fff
444 ddd 222 bbb
444 ddd 333 ccc
444 ddd 444 eee
444 ddd 444 fff
select * from test111 full join test222 on test111.id=test222.id;
222 bbb 222 bbb
444 ddd 444 eee
444 ddd 444 fff
111 aaa
333 ccc
等同于
select * from test111 inner join test222 on test111.id=test222.id
union all
select * from test111 left join test222 on test111.id=test222.id where test222.id is null
union all
select * from test111 right join test222 on test111.id=test222.id where test111.id is null;