--单行子查询:--使用时机:筛选条件不明确需要执行一次查询,并且查询结果一个字段并值只有一个--注意:where子句中允许出现查询语句,该查询语句称为子查询--使用:select 内容 from 表名 where 字段名 比较运算符 子查询语句--查询所有比雇员“CLARK”工资高的员工信息select*from emp where sal>(select sal from emp where ename ='CLARK')--查询工资高于平均工资的员工的名字和工资select ename,sal from emp where sal>(selectavg(sal)from emp )--查询和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=(selectmax(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 job=(select job from emp where ename='SCOTT')or hiredate <(select hiredate from emp where ename='SCOTT')--------------
----多行子查询:--使用:子查询的结果只有一个字段但是字段有n个值,考虑使用多行子查询,其实就是使用关键字--关键字1:any 任意--select 内容 from 表名 where 字段名 比较运算符 any 子查询语句--关键字2:all 所有--select 内容 from 表名 where 字段名 比较运算符 all 子查询语句--关键字3:in 表示任意存在,相当于 = any --select 内容 from 表名 where 字段名 in 子查询语句 --select 内容 from 表名 where 字段名 not in 子查询语句 --查询工资高于任意一个CLERK的所有员工信息select*from emp where sal>any(select sal from emp where job='CLERK')--查询工资高于所有SALESMAN的员工信息select*from emp where sal>all(select sal from emp where job='SALESMAN')--查询部门20中同部门10的雇员工作一样的雇员信息select job from emp where deptno=10select*from emp where(job='MANAGER'or job='PRESIDENT'or job='CLERK')and deptno=20select*from emp where job in(select job from emp where deptno=10)and deptno=20select*from emp where job =any(select job from emp where deptno=10)and deptno=20