1.单行子查询
题目:查找与7369雇员号在同一个部门的所有职员信息,包括雇员号、雇员姓名、职位、薪金和雇佣日期
select deptno,empno,ename,job,sal,hiredate from emp where deptno=(select deptno from emp where empno=7369);
2.多行子查询
2.1使用IN操作符的多行子查询
题目:查询所有在任职职位上工资最高的员工
select empno,ename,job,sal from emp where sal in (select max(sal) from emp group by job);
2.2使用ANY操作符的多行子查询
题目:查询比部门20某个员工工资高的员工信息
select empno,ename,sal from emp where sal>ANY(select sal from emp where deptno>20);
2.3使用ALL操作符的多行子查询
题目:查询比部门20所有员工工资高的员工信息
select empno,ename,sal from emp where sal>ALL(select sal from emp where deptno=20);
3.多列子查询
3.1单行多列子查询
题目:查询与7788号雇员的工资、工种都相同的雇员信息
select empno,ename,sal,job from emp where (sal,job)=(select sal,job from emp where deptno=7788);
3.2多行多列子查询
题目:查询与部门10某个雇员的工资、工种都相同的雇员信息。
select empno,ename,sal,job from emp where(sal,job) in (select sal,job from emp where deptno=10);
4.相关子查询
题目:查找工资高于自己本部门平均工资的所有员工
select * from emp e where sal>(select avg(sal) from emp where deptno=e.deptno);
题目:显示每个部门的信息和人员数量
select d.*,(select count(*) from emp where deptno=d.deptno) tot from dept d;
5.嵌套子查询
题目:查询比部门(部门10除外) 最高平均工资高的部门和平均工资
select deptno,avg(sal) from emp group by deptno having avg(sal)>(select max(avg(sal)) from emp where
deptno in(select deptno from dept where deptno>10) group by deptno);