서브쿼리(Subquery)

Suhyeon Lee·2024년 10월 4일
0

Subquery

  • 다른 쿼리를 내부에 작성하여 사용하는 쿼리
    • SELECT문을 이용한 데이터 조회는 검색 조건에 따른 또 다른 테이블을 만드는 것을 의미
    • 검색 결과의 테이블을 활용하여 다시 쿼리를 실행하는 것이 서브쿼리라 할 수 있음

종류

1. 스칼라 서브쿼리(Scalar Subquery)

: SELECT절에서 사용되는 서브쿼리

2. 인라인 뷰(Inline View)

: FROM절에서 사용되는 서브쿼리

3. 중첩 서브 쿼리(Nested Subquery)

: WHERE, HAVING절에서 사용되는 서브쿼리

특징

1. 스칼라 서브쿼리(Scalar Subquery)

  • 서브쿼리에서 나오는 결과값이 1개의 행이어야 함
  • 2개 이상의 행이나 NULL값은 사용할 수 없음

2. 인라인 뷰(Inline View)

  • 서브쿼리의 테이블에서 조회한 컬럼만 사용 가능
  • 별칭 필수

3. 중첩 서브 쿼리(Nested Subquery)

  • 단일행, 복수행 서브쿼리 가능
    • 1개의 값을 표현할 경우 단일행 서브쿼리, 여러 개의 값이 필요할 경우 복수형 서브쿼리라 함

Scalar Subquery

사용 시 주의사항

  1. SELECT문으로만 작성 가능
  2. 괄호(()) 안에 작성해야 함
  3. ORDER BY절에서는 사용할 수 없음

사용법

SELECT
  [Column Name]
  , [Column Name]
  , (Scalar Subquery)
  , [Column Name]
FROM
  [Table Name]
;

예시

SELECT
  mb_id
  , address
  , (
    SELECT
      korea_name
    FROM
      company_table b 
    WHERE b.company_code = a.company_code
    )
  , mb_tell
FROM
  member_table a
;
  • member_table a와, company_table b를 지정하여 2개의 테이블 company_code의 같은 값을 비교하여 korea_name을 출력

Inline View

  • FROM절에서 사용되는 서브쿼리
  • 서브쿼리에서 조회한 결과를 하나의 테이블처럼 사용하고 싶을 때 사용
  • SQL문이 실행될 때 임시적으로 생성되는 동적 뷰
  • 테이블에서 조회한 컬럼만 조회 가능

사용 시 주의사항

  1. SELECT문으로만 작성 가능
  2. 괄호(()) 안에 작성해야 함
  3. 인라인 뷰 서브쿼리에서 조회한 컬럼만 메인쿼리에서 조회 가능
  4. 사용자 별칭 지정해야 함(AS 뒤에 별칭 명시)
  5. 메인쿼리에서 인라인 뷰 서브쿼리의 컬럼을 조회할 경우 별칭 지정해야 함
    (메인 쿼리에 인라인 뷰 서브쿼리의 별칭을 지정하고 조회)

사용법

SELECT
  [Inline View Alias].[Column Name]
  , [Inline View Alias].[Column Name]
  , [Inline View Alias].[Column Name]
FROM
  [Inline View] AS [Alias]

예시

SELECT
  a.mb_id
  , a.address
FROM
  (
  SELECT
    mb_id
    , address
  FROM
    member_table
  ) AS a
;
profile
2 B R 0 2 B

0개의 댓글