oracle基础(三)

-查询员工信息,要求:显示员工的姓名,工资,部门号,部门名称

select e.ename,e.sal,d.deptno,d.dname

  from emp e,dept d

   where e.deptno=d.deptno;

多表查询时,采用表的别名,来对同样的列做区分

查询员工的工资水平

select e.ename,e.sal,s.grade

  from emp e,salgrade s

  where e.sal>=s.losal and e.sal<=s.hisal;

 

select e.ename,e.sal,s.grade

 from emp e,salgrade s

 where e.sal between s.losal and s.hisal;

 

按部门统计员工的人数,要求显示:部门号,部门的名称和部门人数

select e.deptno 部门号 ,d.dname 部门名称,count(e.deptno)部门人数

from emp e,dept d

where e.deptno = d.deptno

group by e.deptno,d.dname

弊端;40号部门没有显示出来 原因是:40号部门没有员工

左外连接:等号左边所代表的集合,无论条件是否成立,均在结果集中显示

写法:where d.deptno = e.deptno(+)

右外连接: 等号右边所代表的集合,无论条件是否成立,均在结果集中显示

写法:where d.deptno(+) = e.deptno
自连接:

查询员工和老板上下级关系

分析:老板也在emp表中,员工也在emp表中

弊端:自连接一般情况下,只适用于小表

层次查询

select level,empno,ename

from emp

connect by prior empno = mgr

  start with empno=7839

 order by 1

 

你可能感兴趣的:(oracle)