单行子查询

  • 单行子查询
    • select 内容 from 表名 where 子查询语句
    • 什么时候使用单行子查询?
      • 在不能直接获取有效信息的时候,考虑使用子查询
    • 单行子查询的注意事项?
      • 子查询的结果必须只有一个值
      • 可以直接使用算术链接符
      • 子查询出现在where中,一般出现在条件语句的右边
    • 实例
      • 查询所有比雇员“CLARK”工资高的员工信息
      • select * from emp where sal>(select sal from emp where ename=’CLARK’)
      • 查询工资高于平均工资的员工的名字和工资
      • select * from emp where sal>(select avg(sal) from emp) order by sal
      • 查询和soctt属于同一部门且工资比他低的员工资料
      • select * from emp where deptno=(select deptno from emp where ename=’SCOTT’) and sal<(select sal from emp where ename=’SCOTT’)
      • 查询工资最高的员工资料
      • select * from emp where sal=(select max(sal) from emp)
      • 查询职务和scott相同,雇佣时间早的员工信息
      • select * from emp where job=(select job from emp where ename=’SCOTT’) and hiredate<(select hiredate from emp where ename=’SCOTT’)
      • 查询工资比scott高或者雇佣时间早的员工编号和名字
      • select empno,ename from emp where sal>(select sal from emp where ename=’SCOTT’) or hiredate<(select hiredate from emp where ename=’SCOTT’)
      • 查询工资高于任意一个CLERK的所有员工信息
      • select * from emp where sal>(select min(sal) from emp where job=’CLERK’) and job<>’CLERK’

多行子查询

  • 多行子查询
    • 多行子查询学习:其实就使用使用关键字:any all in
    • 注意:子查询返回多个值建议使用多行子查询,返回的单个值使用单行子查询
  • 实例
    • 查询工资高于所有SALESMAN的员工信息
    • select * from emp where sal>all (select sal from emp where job=’SALESMAN’;
    • 查询部门20中同部门10的雇员工作一样的雇员信息
    • select * from emp where deptno=’20’ and job= any (select job from emp where deptno=’10’)