子查詢(xún)
單行子查詢(xún)(single-row subqueries)
使用的運算符號(=,>,<,>=,<=,<>)
多行子查詢(xún)(multiple-row subqueries)
使用的運算符號(in,not in,exists,not exits,all,any)
相關(guān)子查詢(xún)(correlated subqueries)
格式 select 列名,(select 語(yǔ)句) from 表名
標量子查詢(xún)(scalar subqueries)
子查詢(xún)是返回單行單列,格式同上
多列子查詢(xún)(multiple-column subqueries)
在DDL語(yǔ)句中使用子查詢(xún)
在DML語(yǔ)句中使用子查詢(xún)
--------
單行子查詢(xún)
--顯示工資最高的雇員信息
Select ename,deptno,sal from emp
Where sal=(select max(sal) from emp);
--------
多行子查詢(xún)
--顯示與部門(mén)編號為20的崗位相同的雇員信息
Select ename,deptno,sal,job from emp
Where job in (select distinct job from emp where deptno=20);
--顯示不與部門(mén)編號為20的崗位相同的雇員信息
Select ename,deptno,sal,job from emp where job not in (select distinct job from emp where deptno=20);
--顯示高于部門(mén)編號為20的所有雇員的工資的雇員信息
select ename,deptno,sal ,job from emp
where sal>all(select sal from emp where deptno=20);
--顯示高于部門(mén)編號為20的任何雇員的工資的雇員信息
select ename,deptno,sal ,job from emp
where sal>any(select sal from emp where deptno=20);
---------
相關(guān)子查詢(xún)
--顯示每個(gè)部門(mén)的最高工資的雇員信息
select deptno,(select max(sal) from emp b where b.deptno=a.deptno) maxsal
from emp a order by deptno;
--增加distinct
select distinct deptno,(select max(sal) from emp b where b.deptno=a.deptno) maxsal
from emp a order by deptno;
--顯示工作在NEW YORK的雇員信息
select ename,deptno,sal,job from emp
where exists (select 'x' from dept where dept.deptno=emp.deptno and dept.loc='NEW YORK');
---------
標量子查詢(xún)
--返回單行單列
Select count(*) from emp;
Select sum(sal) ......