서브 쿼리: 다른 쿼리 내부에 포함되어 있는 SELECT문
서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 하며, 서브쿼리는 내부쿼리(inner query)라고 불린다. 서브쿼리는 반드시 괄호()로 감싸져 있어야만 한다.
서브쿼리는 메인 쿼리의 다음 부분에 위치할 수 있다.
보편적으로 FROM과 WHERE절에서 가장 많이 사용된다.
또한 서브쿼리는 2가지로 나뉜다.
서브쿼리의 실행결과가 하나의 칼럼과 하나의 행을 리턴
단일행 서브쿼리는 >, >=, <, <=, =, != 과 같은 비교연산자와 함께 쓰인다.
ex)
EMPLOYEES 테이블에서 Kochhar의 급여보다 많은 사원의 정보를 사원번호,이름,담당업무,급여를 출력하라.
결과)
ex)
EMPLOYEES 테이블에서 100번 부서의 최소 급여보다 최소 급여가 많은 다른 모든 부서를 출력하라
결과)
서브쿼리의 실행결과가 하나의 칼럼과 여러개의 행을 리턴해주는 쿼리
다중행 서브쿼리의 결과값을 조건절에서 사용할때는 반드시 다중행 연산자와 함께 사용해야한다.
(IN, ALL, ANY, EXIST)
ex)
EMPLOYEES 테이블에서 (사원번호가 123인 사원의 직업)과 같고 (사원번호가 192인 사원의 급여(SAL))보다 많은 사원의 사원번호,이름,직업,급여를 출력하라.
결과)
ex)
직업(JOB)별로 최소급여를 받는 사원의 정보를 사원번호,이름,업무,부서명을 직업별로 내림차순 정렬하여 출력하라.
결과)