- Main Query에 반대되는 개념으로 이름을 붙인 것
- 메인 쿼리를 구성하는 소단위 쿼리
- select, insert, delete, update절에서 모두 사용 가능
- 서브쿼리의 결과 집합을 메인 쿼리가 중간 결과값으로 사용
- 서브쿼리 자체는 일반 쿼리와 다를 바가 없다.
📌 예시 1
SELECT ROUND(AVG(SALARY)) -- ROUND(AVG(SALARY)) = 6462
FROM EMPLOYEES e
;
SELECT *
FROM EMPLOYEES e
WHERE SALARY < 6462 -- 평균값은 언제든지 변경될 수 있는 값
;
SELECT *
FROM EMPLOYEES e
WHERE SALARY < (SELECT ROUND(AVG(SALARY)) FROM EMPLOYEES)
;
📌 예시 2 / 나라의 ID가 US인 지역에 존재하는 부서를 조회
SELECT LOCATION_ID
FROM LOCATIONS l
WHERE COUNTRY_ID = 'US'
;
SELECT *
FROM DEPARTMENTS d
WHERE LOCATION_ID IN (1400,1500, 1600, 1700)
;
SELECT *
FROM DEPARTMENTS d
WHERE LOCATION_ID IN (SELECT LOCATION_ID FROM LOCATIONS l WHERE COUNTRY_ID = 'US')
;
📌 예시 3 / 월급이 가장 적은 사원
SELECT MIN(SALARY)
FROM EMPLOYEES e
;
SELECT *
FROM EMPLOYEES e
WHERE e.SALARY = (SELECT MIN(SALARY) FROM EMPLOYEES)
;