全连接

全连接:它会查出两个表中的所有数据;
1.如果两个表中的数据都符合连接条件,那么它会和内连接一样,将符合条件的数据连接为一条记录

2.如果第一表中的一条数据,在第二张表中没有找到和它对应的记录(第二张表没有和第一张表这条数据符合连接条件),
那么它同样会显示第一张表的这条记录,同时它对应的第二张表数据的位置会显示为空

3.同理,如果第二张的一条记录,在第一张表中没有找到符合连接条件的数据,那么同样会显示,在显示第一张表数据的位置显示为空

语法:

语法:
select 列名,列名,列名,....
from 表A full outer join 表B on 连接条件;

举个例子:查询所有部门和员工信息

select e.*,d.* from emp e full outer join dept d on e.deptno=d.deptno;



full outer join :中的outer可以省略

SELECT e.*,d.* FROM emp e FULL JOIN dept d ON e.deptno=d.deptno;


左外连接

查出左表(left outer join关键字前面的表)的所有数据,根据连接条件去右表中找对应的数据如果找到变显示出来,如果找不到就显示空。

语法:
select 列名,列名,... from 表A left outer join 表B on 连接条件 (OUTER可以省略不写)

举例:查询所有部门信息,以及各部门下的员工信息

select d.*,e.* from dept d left join emp e on d.deptno=e.deptno;



除此之外,还有一种方法:

select d.*,e.* from dept d,emp e where d.deptno=e.deptno(+);



注意:用(+)表示的左连接或者右连接,如果是左连接,那么符号加在右表的关系列上,如果是右连接,那么符号加在左表的关系列上
左连接
select d.*,e.* from dept d,emp e where e.deptno(+)=d.deptno;

右连接 
select d.*,e.* from dept d,emp e where d.deptno(+)=e.deptno;


右外连接

它会查出右表的所有数据,根据连接条件去左表查找对应的数据,如果找到就显示,如果找不到就显示为空语法。

语法:
select 列名,列名,... from 表A right outer join 表B on 连接条件 (OUTER可以省略不写)
举例:查询员工信息,并显示它的部门信息

select d.*,e.* from dept d right outer join emp e on d.deptno=e.deptno;

或者

select d.*,e.* from dept d,emp e where d.deptno(+) = e.deptno;

感谢关注!
回复"优化"获取SQL优化资料;
回复"面试"获取面试重点资料;
回复"数据库安装包"获取Oracle mySQL安装包+工具;
部分关键字功能还未完善,望见谅。

更多推荐

【Oracle 数据库】奶妈式教程 day08 全连接 左外连接 右外连接