一、oracle的连接 sql99的连接
1、等值连接 cross joins
2、不等值连接 natural joins
3、外连接 using clause
4、自连接 full or two sided outer joins
连接条件和表的个数的关系:连接条件至少有n-1个条件(n是表的个数)
二、外连接---对于不成立的记录,仍然希望包含在最后的结果中
左外连接: 当where e.deptno=d.deptno 不成立的时候,等号左边的表仍然被包含
写法:where e.deptno=d.deptno(+)
右外连接:当where e.deptno=d.deptno 不成立的时候,等号右边的表仍被包含
写法:where e.deptno(+)=d.deptno
三:自连接---通过表的别名,将同一张表视为多张表
select e.ename 员工姓名,b.ename老板姓名
from emp e, emp b
where e.mgr=b.empno;
--------性能问题:自连接操作一张表,但是是多表查询,所以笛卡尔积是原表的平方,所以不适合操作大表
四:层次查询----伪列 level
select level,empno,ename,mgr
connect by prior empno=mgr
start with mgr is null
order by 1;
start with empno=7566;
connect by 上一层的员工号=下一层的老板号