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;

 

posted @ 2016-05-07 19:56  非职业侦探  阅读(121)  评论(0编辑  收藏  举报