ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DML]SELECT-서브쿼리
    SQLD/SQL 2023. 9. 7. 18:01

    서브쿼리

     

    서브쿼리란?

    • 하나의 쿼리 안에 존재하는 또 다른 쿼리이다.
    • SELECT,FROM,WHERE,HAVING,ORDER BY,UPDATE문의 SET절 에서 사용될 수 있다.

    서브쿼리 사용시 주의 사항

    • 서브쿼리는 괄호()로 감싸서 사용해야한다.
    • 서브쿼리는 ORDER BY절을 사용할 수 없다. 메인쿼리절에서만 사용 가능하다.

    서브쿼리의 종류

    사용되는 위치에 따라 다음과 같이 나눌 수 있다.

    SELECT 절 스칼라 서브쿼리(Scalar Subquery)
    FROM 절 인라인 뷰(Inline View) 
    WHERE 절 중첩 서브쿼리(Nested Subquery)

    1.스칼라 서브쿼리

    • SELECT절에서 사용하는 스칼라 서브쿼리는 한 행, 한 컬럼만을 반환한다.
    • 컬럼을 쓸 수 있는 대부분의 곳에서 사용할 수 있다.

    2.인라인 뷰

    • FROM절에서 사용하는 인라인 뷰는 동적으로 생성된 테이블인 것처럼 사용할 수 있다.
    • 인라인 뷰는 테이블명이 올 수 있는 곳에서 사용할 수 있다. 

    3.중첩 서브쿼리

    WHERE절에서 사용하는 중첩 서브쿼리는 메인 쿼리와의 관계에 따라 다음과 같이 나뉜다.

    서브쿼리 종류 설명
    비연관 서브쿼리
    (Un-Correlated)
    서브쿼리가 메인쿼리 컬럼을 갖고 있지 않은 형태
    메인쿼리에게 서브쿼리가 실행된 값을 제공하는 목적으로 주로 사용된다.
    연관 서브쿼리
    (Correlated)
    서브쿼리가 메인쿼리의 컬럼을 갖고 있는 형태 
    메인쿼리에서 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인하고자 할 때 사용된다.

    또한 중첩서브쿼리는 반환되는 데이터 타입에 따라 다음과 같이 나눌 수 있다.

    서브쿼리 종류 설명
    단일 행 서브쿼리
    (Single Row)
    서브쿼리가 1건 이하의 데이터를 반환
    단일 비교연산자 사용 (=,<,>,<=,>=,<>)
    다중 행 서브쿼리
    (Multi Row)
    서브쿼리가 여러 건의 데이터를 반환
    다중 비교 연산자 사용 (IN,ALL,ANY,SOME,EXISTS)
    다중 컬럼 서브쿼리
    (Multi Column)
    서브쿼리에서 여러개의 컬럼의 데이터를 반환한다.
    다중 비교 연산자 사용 (IN,ALL,ANY,SOME,EXISTS)
    *오라클에서만 사용 가능

    ⚠️참고 사항

    단일 행 서브쿼리는 다중행 비교연산자(IN,ALL,SOME,EXISTS)를 사용할 수 없다.

    반대로 다중 행 서브쿼리는 단일행 비교연산자 (=,<,>,<=,>=,<>) 를 사용할 수 있다.

     

     

    'SQLD > SQL' 카테고리의 다른 글

    [DML]SELECT-연산자  (0) 2023.08.30
    [DML]SELECT구문  (0) 2023.08.29
    [DML]INSERT,UPDATE,DELETE  (0) 2023.08.29
    [DDL]ALTER,DROP,TRUNCATE,RENAME  (0) 2023.08.29
    [DDL]CREATE  (0) 2023.08.28
Designed by Tistory.