在oracle 10g上做的实验;
在oracle数据库中两张表,做了备份,empbak和deptbak,
Empbak
Depybak
一、内连接:
1、内连接,即最常见的等值连接,例:
select * from empbak e,deptbak d where e.deptno=d.deptno;
二、外连接
外连接分为左外连接,右外连接和全外连接。
1、左外连接 left outer join 或者 left join
左外连接就是在等值连接的基础上加上主表中的未匹配数据,例:
select * from empbak e left join deptbak d on e.deptno=d.deptno;
或者:
select * from empbak e , deptbak d where e.deptno=d.deptno(+);
即:在empbak也显示比匹配的内容,由于empbak数据在deptbak都有对应,所以和内连接显示内容一致。
2、右外连接 right outer join 或者 right join
右外连接是在等值连接的基础上加上被连接表的不匹配数据,例:
select * from empbak e right join deptbak d on e.deptno=d.deptno;
或者:
select * from empbak e , deptbak d where e.deptno(+)=d.deptno;
3、全外连接 full outer join 或者 full join
全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上,例:
select * from empbak e full join deptbak d on e.deptno=d.deptno;
或者:(全外连接的等价写法,对同一表先做左连接,然后右连接)
select * from empbak e , deptbak d where e.deptno=d.deptno(+) unino
select * from empbak e , deptbak d where e.deptno(+)=d.deptno;