Oracle的连接条件的类型
- 等值连接
- 不等值连接
- 外连接
- 自连接
1.2 Oracle中外连接的写法
Oracle中外连接也是分左外连接和右外连接。
左外连接:当where e.deptno=d.deptno不成立时,等号左边的表任然被包含在最后的结果中,写法:where e.deptno=d.deptno(+)
右外连接:当where e.deptno=d.deptno不成立时,等号右边的表任然被包含在最后的结果中,写法:where e.deptno(+)=d.deptno
1.3 自连接不适合操作大表
因为自连接是自己连接自己结果会按笛卡尔积的数量产生数据,因此如果想要对大表进行自连接应该采用层次查询。
1.4 层次查询
层次查询是一种单表查询。
例如下图是员工对应老板的数据。
那么这种树形结构该怎么遍历呢?
写法结构可以是这样的:
select
from emp
connect by 上层的员工=这一层的老板
start with 起始条件(从哪个节点开始往下遍历)
- level这个伪列字段在原表中其实是不存在,只是在特定情况下oracle允许我们使用这种伪列来表示一种状态。
- connect by和start with其实是oracle的一种特定关键字。