1.단일 행 서브쿼리
오직 하나의 로우만을 반환하는 서브쿼리
단일 비교연산자인 =, >, >=, <, <=, <>를 사용해야 한다.
2.다중 행 서브쿼리
하나 이상의 로우를 반환하는 서브쿼리
다중행 연산자를 사용해야 한다.(IN, ANY/SOME, ALL, EXIST)
IN
메인 쿼리의 비교 조건이 서브 쿼리의 결과 중 하나라도 일치하면 참
직급(JOB)이 MANAGER인 사람이 속한 부서의 부서 번호와 부서명과 지역을 출력하는 예제
select deptno, dname, loc
from dept
where deptno IN (select deptno
from emp
where job = 'MANAGER');
ALL
메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 모든 값이 일치하면 참
영업 사원들보다 급여를 많이 받는 사원들의 이름과 급여와 직급을 출력하되 영업 사원은 출력하지 않는 예제
select ename, sal
from emp
where job !='SALESMAN'
AND sal > ALL(select sal
from emp
where job ='SALESMAN')
ORDER BY sal;
ANY
메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 하나 이상이 일치하면 참(비교연산자 사용)
영업 사원들의 최소 급여보다 많이 받는 사원들의 이름과 급여와 직급을 출력하되 영업 사원은 출력하지 않는 예제
select ename, sal
from emp
where sal>=any(select sal
from emp
where job='SALESMAN')
AND job<>'SALESMAN'
-select 절 : 한 행, 한 컬럼만을 반환하는 서브쿼리
-from 절 : View처럼 사용되는 서브쿼리
-where절 : 다중 칼럼 또는 다중 행을 반환
'DB' 카테고리의 다른 글
SQL 제약조건 (0) | 2022.08.06 |
---|---|
SQL DDL DML +트랜잭션 (0) | 2022.08.05 |
SQL Join (0) | 2022.08.04 |
SQL 함수 (0) | 2022.08.03 |
SQL WHERE, GROUP BY, HAVING , ORDER BY절 (0) | 2022.08.03 |