随笔全个人原创,转载请申明作者

1.5 Oracle数据库学习教程-多表查询

Oracle数据库学习教程

多表查询

20211006143105

仔细看上面的图片
多表操作,首先会生成笛卡尔全集表.多表查询就是按照给定条件(连接条件),从笛卡尔全集中选出正确的结果
根据连接条件的不同可以划分为:等值链接、不等值链接、外链接、自连接

1.等值连接

emp表: 记录了员工姓名,部门ID等,没有部门名
20211006142723
dept表: 记录了部门ID,部门名等
20211006142812
多表: 现在需要,员工名和部门名,很明显需要两张表的信息
20211006143726

所以需要添加where选出真正需要的数据
20211006144521
如果有N张表,至少需要N-1个条件.

2.不等值连接

工资级别表
20211006150007

下面是不等值连接(使用between..and更合适)
20211006150430

3.外连接

统计各部门人数:
20211006151605

也就是包含一些不符合where条件的数据

左外链接:当 where e.deptno=d.deptno 不成立的时候,=左边所表示的信息,仍然被包含。

  • 写法:与叫法相反:where e.deptno=d.deptno(+)

右外链接:当 where e.deptno=d.deptno 不成立的时候,=右边所表示的信息,仍然被包含。

  • 写法:依然与叫法相反:where e.deptno(+)=d.deptno

20211006152747

4.自连接

核心,通过表的别名,将同一张表视为多张表。
select e.ename || ' 的老板是 ' || nvl(b.ename, '他自己' )from emp e, emp b where e.mgr=b.empno(+)
20211006155415

posted @ 2021-10-06 16:00  许小仙  阅读(72)  评论(0编辑  收藏  举报