프로그래밍 숲

SQL 다중 행 서브쿼리, 인라인 뷰 서브쿼리, 단일 행 서브쿼리 쉽게 이해하기 본문

프로그래밍_인포/데이터베이스&SQL

SQL 다중 행 서브쿼리, 인라인 뷰 서브쿼리, 단일 행 서브쿼리 쉽게 이해하기

jjscript 2023. 6. 4. 10:24
728x90
반응형

전체 SQL문

SELECT
  e.employee_number,
  e.employee_name,
  d.department_number,
  d.department_name,
  (
    SELECT COUNT(*)
    FROM Dependents d
    WHERE d.employee_number = e.employee_number
  ) AS number_of_dependents
FROM
  departments d,
  (
    SELECT *
    FROM employees
    WHERE Entered_year = '2015'
  ) e
WHERE
  d.department_number = e.department_number
  AND EXISTS (
    SELECT 1
    FROM temples t
    WHERE t.department_number = d.department_number
  );

다중 행 연관 서브쿼리

SELECT 1
FROM temples t
WHERE t.department_number = d.department_number

다중 행 서브쿼리(Multi Row 서브쿼리)는 서브쿼리의 실행 결과가 여러 건인 서브쿼리를 의미합니다. 다중 행 서브쿼리는 다중 행 비교 연산자와 함께 사용됩니다. 다중 행 비교 연산자에는 IN, ALL, ANY, SOME, EXIST가 있습니다.

 

다중 행 서브쿼리의 비교 연산자는 단일 행 서브쿼리의 비교 연산자로도 사용이 가능합니다. 하지만 그 반대의 경우는 불가능합니다. 즉, 단일 행 서브쿼리의 비교 연산자는 다중 행 서브쿼리의 비교 연산자로 사용할 수 없습니다.

인라인 뷰 서브쿼리

SELECT *
FROM employees
WHERE Entered_year = '2015'

FROM 절에서 사용되는 서브쿼리를 인라인 뷰(Inline View)라고 합니다. FROM 절에는 테이블 명이 오도록 되어 있습니다. 그러나 서브쿼리가 FROM 절에 오게 된다면 어떻게 될까요? 서브쿼리의 결과가 마치 실행 시에 동적으로 생성된 테이블인 것 처럼 사용할 수 있습니다. 그래서 인라인 뷰를 동적 뷰(Dynamic View)라고 부르기도 합니다.

단일 행 연관 서브쿼리

SELECT
  count(*)
FROM
  부양가족 y
WHERE
  y.사원번호 = b.사원번호

단일 행 서브쿼리(Single Row 서브쿼리)는 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리를 의미합니다. 단일 행 서브쿼리는 단일 행 비교 연산자와 함께 사용됩니다. 단일행 비교 연산자에는 =, <, <=, >, >=, <>이 있습니다.

728x90
반응형
Comments