码迷,mamicode.com
首页 > 数据库 > 详细

Oracle多表连接查询Join

时间:2019-03-06 14:52:29      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:实例   从表   cot   oracl   outer   查询   结果   join   rac   

Left join 和right join 为外部连接,inner join 为内部连接

Left join 左侧为主表,右侧为从表,主表会显示出所有数据,从表则只显示关联到的数据,不满足连接条件 的行数据用NULL补全

right join 右侧为主表,左侧为从表,主表会显示出所有数据,从表则只显示关联到的数据,不满足连接条件 的行数据用NULL补全

inner join 则只显示2张表关联条件相匹配的数据

(1)dept(部门表)

技术图片

(2)emp(雇员表)

技术图片

1、inner join

     语法:select a.x from a inner join b on a.id=b.id;

     inner 可以省略.

实例:

select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
  from scott.emp a  join  scott.dept b
 on a.deptno = b.deptno ;

 结果:

技术图片

3、left outer join

查询结果除了返回包含连接条件的行,还包含a表中不满足条件的行。其中不满足的条件行中B表的字段将被置空

 语法: select a.x form a left outer join a on a.id=b.id   outer可以省略

实例:

 select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
  from scott.emp a left outer join  scott.dept b
 on a.deptno = b.deptno

结果:

技术图片

当查询中出现过滤条件时:

1)当连接条件后面有where条件时:

 select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
  from scott.emp a left outer join  scott.dept b
 on a.deptno = b.deptno where b.dname like ‘SALES‘

解释:先根据连接条件a.deptno = b.deptno查询,再对查询结果按过滤条件查询。

结果:

技术图片

2)当连接条件后面有and条件时:

 select a.empno as 员工编号, a.ename as 员工名称, b.dname as 部门
  from scott.emp a left outer join  scott.dept b
 on (a.deptno = b.deptno and b.dname like ‘SALES‘)

解释:先对b表按过滤条件查询,再对结果执行左连接查询。

结果:

技术图片

 

3 、right outer join 

查询结果除了返回包含连接条件的行,还包含右表(b)中不满足连接条件的行,

其中不满足连接条件的行中a表的字段值将被置为空。

语法:select a.x from a right join a on a.id=b.id

outer 可以省略.

参考文档:https://www.cnblogs.com/dog2016/p/7402019.html

Oracle多表连接查询Join

标签:实例   从表   cot   oracl   outer   查询   结果   join   rac   

原文地址:https://www.cnblogs.com/flyyingzi/p/10482975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!