Oracle学习4
多表查询
1、等值连接
这里不做介绍了
2、不等值连接
select e.empno,e.ename,e.sal,s.grade from emp e,salgrade s where e.sal between s.losal and s.hisal; between and 中小值在前大值在后
3、外连接
统计各部门的人数,要显示部门号,部门名称,部门人数。
select d.deptno,d.dname,count(e.empno) from emp e,dept d where e.deptno (+) = d.deptno group by d.deptno,d.dname; (右外连接)
左外连接:e.deptno = d.deptno (+)
4、自连接
select e.ename,b.ename from emp e,emp b where e.mgr = b.empno;
自连接不适合查询大表
层次查询解决上面的查询:
select level,empno,ename,sal,mgr from emp connect by prior empno = mgr start with mgr is null order by 1;
对,才值得坚持