-查询员工信息,要求:显示员工的姓名,工资,部门号,部门名称
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