子查询:嵌套在其他查询中的查询。
子查询又称内部查询,而包含子查询的语句称为外部查询(又称主查询)。
所有的子查询可以分为两类,即相关子查询和非相关子查询
1.非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。
2.相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。因此非相关子查询比相关子查询效率要高。
用法举例说明:
--非相关子查询
select empno, lastname
from employee
where workdept = 'a00'
and salary > (select avg(salary)
from employee
where workdept = 'a00'
) –-子查询是一个独立的查询
--相关子查询
select e1.empno, e1.lastname, e1.workdept
from employee e1
where salary > (select avg(salary)
from employee e2
where e2.workdept = e1.workdept
) –-依赖于外部查询结果
order by e1.workdept