Oracle总结03多表-6外连接

本文介绍了在Oracle数据库中如何使用外连接,特别是左外连接,以解决多表查询时确保显示所有部门信息的问题。通过一个实例展示了在部门统计员工人数时,由于where子句的限制导致缺少某些部门数据,从而引出外连接的概念。重点讲解了外连接的工作原理,以及在查询语句中如何使用+(加号)实现左外连接,确保即使连接条件不成立,也能包含等号左边表的所有记录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例:按部门统计员工人数,要求显示:部门号,部门名称,人数

分析:涉及到2张表,部门表(部门号,部门名称),员工表(员工表);

错误语句:

select d.deptno,d.dname,count(e.empno)

from emp e,dept d

where e.deptno = d.deptno

group by d.deptno,d.dname;

注意:d.deptno,d.dname不在组函数count(e.empno)参数中,所以要加上group by 子句

验证部门信息:

发现DEPTNO为40的部门信息没显示,因为emp员工表中deptno为40的员工不存在。

查询发现没有数据。

所以where的条件需要修改

外连接:通过外连接,把对于连接条件不成立的记录,任然包含在最后的结果中。

左外连接:当连接条件不成立的时候,等号左边的表任然被包含。

右外连接:当连接条件不成立的时候,等号右边的表任然被包含。

where e.deptno(+) = d.deptno 因为本实例需要显示的是部门deptno表中的部门号和部门名称右外连接,把+号放在等号左边。

select d.deptno,d.dname,count(e.empno)

from emp e,dept d

where e.deptno(+) = d.deptno

group by d.deptno,d.dname;

这里要注意等号的左右位置。

用(+)来实现, 这个+号可以这样来理解: + 表示补充,即哪个表有加号,这个表就是匹配表。如果加号写在左表,右表就是全部显示,所以是右连接

最终结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值