상세 컨텐츠

본문 제목

[개미의 걸음 SQLD 2과목] 서브 쿼리

자격증/SQLD

by IT개미 데이터 2020. 12. 31. 07:07

본문

728x90

서브쿼리[Subquery]

출처 : DBGUIDE.NET

하나의 SQL문 안에 포함되어 있는 SQL문

  • 서브쿼리는 괄호 안에 작성
  • SELECT절, FROM절, HAVING절, ORDER BY절 등에서 사용 가능
  • SQL의 어느부분에 서브쿼리를 사용하느냐에 따라 인라인뷰, 스칼라 서브쿼리 등으로 나뉨
        → 인라인뷰 : FROM절에 SELECT문 서브쿼리 사용
        → 스칼라 서브쿼리 : SELECT문에 서브쿼리 사용[반드시 한 행과 한 칼럼만을 반환] 
        ※ 일반적으로 WHERE절에 SELECT문을 사용하는 것을 서브쿼리라고 함
  • 동작하는 방식에 따라 연관[Correlated] 서브쿼리와 비연관[Un-Correlated] 서브쿼리로 나뉨
        → 연관 서브쿼리 : 서브쿼리 내에 메인 쿼리 칼럼을 사용하는 것
               (일반적으로 메인쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인할 때 사용)
        → 비연관 서브쿼리 : 서브쿼리 내에 메인 쿼리 칼럼을 사용하지 않는 것
               (일반적으로 메인쿼리 값[서브쿼리가 실행된 결과]을 제공하기 위한 목적으로 사용)
  • 반환하는 행의 개수 및 형태에 따라 단일 행 서브쿼리와 다중 행 서브쿼리로 나뉨
    단일 행 서브쿼리
    [Single Row Subquery]
    * 서브쿼리 실행 시 결과로 한 행만 출력
    * 비교연산자[ =,<,<=,>,>=,<> ]를 사용
    다중 행 서브쿼리
    [Multi Row Subquery]
    * 서브쿼리 실행 시 결과로 여러 개의 행이 출력
    * 다중 행 비교 연산자인 IN, ANY, ALL, EXISTS를 사용
    다중 칼럼 서브쿼리
    [Multi Column Subquery]
    * 서브쿼리의 실행 결과로 여러 칼럼을 반환
    * 메인쿼리의 조건절에 여러 칼럼을 동시에 비교
    * 서브쿼리와 메인쿼리에서 비교하고자 하는 칼럼 개수와 칼럼 위치가 동일해야 함
    * SQL Server에서는 지원하지 않는 기능

# 스칼라 서브쿼리 예

더보기
출처 : DBGUIDE.NET

스칼라 서브쿼리는 한 행,한 칼럼만을 반환

# 단일행 서브쿼리 예

더보기
출처 : DBGUIDE.NET
출처 : DBGUIDE.NET
728x90

다중행 비교 연산자

IN(서브쿼리) 서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미
    → Multiple OR 조건
비교연산자
ALL (서브쿼리)
서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미
    비교연산자로 ">"를 사용했다면 메인쿼리는 서브쿼리의 모든 결과 값을 만족해야 함
    →서브쿼리 결과의 최대값보다 큰 모든 건의 조건을 만족
비교연산자
ANY (서브쿼리)
서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미
    비교연산자로 ">"를 사용했다면 메인쿼리는 서브쿼리의 값들 중 어떤 값이라도 만족하면 됨
    서브쿼리 결과의 최소값보다 큰 모든 건이 조건을 만족[SOME은 ANY와 동일]
EXISTS (서브쿼리) 서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미
    조건을 만족하는 건이 여러 건이라도 1건만 찾으면 더 이상 검색하지 않음

 

728x90

관련글 더보기

댓글 영역