oracle高级查询之多表查询

1.多表查询的基础笛卡尔集

多张表查询产生的表的列数等于所有表的列数之和,行数等于多张表之积

2.多表查询分等值连接,不等值连接,外连接,自连接

等值连接

select e.empno,e.ename from emp e,dept d where e .deptno=d.deptno

不等值连接

select e.empno,e.ename e.sal from emp e,dept d where e.sal between s.hisal and s.losal

其中BETWEEN   --AND--之间必须是前小后大

外连接

外连接的本质是通过外连接,把对于连接条件不成立的记录,仍然包含在最后的结果集中,分为左外连接和右外连接

自连接

自连接核心是通过别名,将同一张表视为多张表

3.层次查询

因为自连接是把一张表视为多张表,会产生笛卡尔集,至少会产生n倍的数据,不适合操作大数据,其本质是多表连接。

层次查询的本质是单表查询,

from emp

connect by prior empno=mgr

start with empno=121(

connect by子节点=父节点)

prior靠近子节点,就往子节点方向遍历,靠近父节点,就往父节点方向遍历

原文地址:https://www.cnblogs.com/libaowen609/p/12819701.html