MinChur

SQL 마스터 가이드 (2): 서브쿼리의 종류와 활용 패턴

|
1 min read

하나의 질의 안에 포함된 또 다른 질의인 서브쿼리의 다양한 형태(스칼라, 연관, 다중 행 등)와 각각의 실행 특징을 정리합니다.

1. 서브쿼리의 위치에 따른 분류

  • 스칼라 서브쿼리 (Scalar Subquery):
    text
    SELECT
    절에 위치하며, 단 하나의 값을 반환합니다. 마치 컬럼 하나처럼 취급됩니다.
  • 인라인 뷰 (Inline View):
    text
    FROM
    절에 위치하며, 가상의 테이블 역할을 합니다.
  • 중첩 서브쿼리 (Nested Subquery):
    text
    WHERE
    절이나
    text
    HAVING
    절에 위치하여 조건을 필터링합니다.

2. 반환 데이터 형태에 따른 분류

  • 단일 행 서브쿼리: 실행 결과가 단 하나의 행인 쿼리입니다.
    text
    =
    ,
    text
    <
    ,
    text
    >
    등의 비교 연산자를 사용합니다.
  • 다중 행 서브쿼리: 여러 행을 반환합니다.
    text
    IN
    ,
    text
    ANY
    ,
    text
    ALL
    ,
    text
    EXISTS
    같은 특수 연산자와 함께 써야 합니다.
  • 다중 컬럼 서브쿼리: 여러 개의 컬럼을 한꺼번에 비교할 때 사용합니다. 주로 메인 쿼리와의 조건을 쌍으로 맞출 때 유용합니다.

3. 메인 쿼리와의 연관성에 따른 분류

  • 비연관 서브쿼리: 서브쿼리가 메인 쿼리의 컬럼을 참조하지 않고 독립적으로 실행됩니다.
  • 연관 서브쿼리 (Correlated Subquery): 서브쿼리 내에서 메인 쿼리의 컬럼을 참조합니다. 메인 쿼리의 각 행을 읽을 때마다 서브쿼리가 반복 실행되므로 성능에 주의해야 합니다.