oracle join连接查询,Oracle多表连接查询Join

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

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

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

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

(1)dept(部门表)

7be23807ce6f4ddd1fe1ce8462e9a4c9.png

(2)emp(雇员表)

095c1ef30ee37c8f959cf8da2ee4ffc9.png

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 ;

结果:

3f4c2205ab1c703b997936a686e9f4ab.png

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

结果:

a866778f737324e04764d9aba313f0cf.png

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

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查询,再对查询结果按过滤条件查询。

结果:

9a278ff680d5cb0d4213ff67b5b659c5.png

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表按过滤条件查询,再对结果执行左连接查询。

结果:

a937749122581d8039709b8713751ab8.png

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值