서브쿼리란
- 서브쿼리(sub query)란 다른 쿼리 내부에 포함되어 있는
select 문
을 의미한다.
- 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브 쿼리는 내부쿼리(inner query)라고 부른다.
- 서브쿼리는 반드시 괄호( ( ) )로 감싸져 있어야 한다.
- 서브쿼리 안에서는
ORDER BY
를 사용하지 못한다.
- 서브 쿼리는
SELECT
, FROM
, WHERE
, HAVING
, ORDER BY
, INSERT문의 VALUES절
, UPDATE문의 SET 절
에 사용가능하다.
서브쿼리 실행 순서
- 서브 쿼리가 먼저 실행된 후에 메인 쿼리가 실행된다.
서브쿼리의 장점
- 서브쿼리는 쿼리를 구조화시키므로, 쿼리의 각 부분을 명확히 구분할 수 있게 해준다.
- 서브쿼리는 복잡한 JOIN이나 UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공한다. (JOIN과 UNION의 대체재)
- 서브쿼리는 복잡한 JOIN이나 UNION보다 가독성이 좋다.
서브쿼리 예시
1. SELECT 절 서브쿼리 (스칼라 서브쿼리)
-- 스칼라 서브쿼리(Scalar Subquery)
-- 정대리 급여와 테이블 전체 평균 급여를 구하시오.
SELECT name, salary, (
SELECT ROUND(AVG(salary),-1)
FROM employee) AS "평균급여"
FROM employee
WHERE name = '정대리';
SELECT 절
에 사용되는 서브쿼리는 하나의 열(column)처럼 사용된다.