全连接
全连接:它会查出两个表中的所有数据;
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 全连接 左外连接 右外连接
发布评论