Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

dongdorodongdong

서브쿼리 본문

SQLD

서브쿼리

d5ngs 2019. 10. 25. 11:26
    서브쿼리
  • 정의
    - 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문

  • 특징
    - 괄호로 감싸서 사용
    - 서브쿼리에서 ORDER BY절 사용X (ORDER BY절은 메인쿼리의 마지막 문장에 위치)
    - SELECT 절, FROM 절, HAVING 절, ORDER BY 절 등에서 사용 가능

  • 종류
    - 연관 서브쿼리
    > 서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태의 서브쿼리
    >
    WHERE sal > (SELECT MAX(sal) FROM emp e2 WHERE e2.name = e1.name)

    - 비연관 서브쿼리
    > 서브쿼리가 메인쿼리 컬럼을 가지고 있지 않은 형태의 서브쿼리
    > 주로 메인쿼리에 값을 제공하기 위한 목적으로 사용

    - 단일 행 서브쿼리
    > 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리를 의미
    > 단일 행 비교 연산자(=, <, <=, >, >=, <>)
    >
    WHERE a1 = (SELECT a1 FROM BOX WHERE name = 'apple')
    WHERE sal > (SELECT sal FROM emp WHERE ename = 'dong')


    - 다중 행 서브쿼리
    > 서브쿼리의 실행 결과가 여러 건인 서브쿼리를 의미
    > 다중 행 비교 연산자(IN, ALL, ANY, SOME, EXISTS)
  •  IN

     서브쿼리 결과에 존재하는 임의의 값과 동일한 조건

     ALL 

     서브쿼리 결과에 존재하는 모든 값을 만족하는 조건

     ANY

     서브쿼리 결과에 존재하는 어느 하나의 값이라도 만족하는 조건

     EXISTS

     서브쿼리 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건

    > 다중 행 비교 연산자는 단일 행 서브쿼리의 비교 연산자로도 사용 가능
    >
    WHERE sal >
    ANY (SELECT sal FROM emp WHERE name = 'dong')
    WHERE sal < ALL (SELECT sal FROM emp WHERE name = 'dong')

    다중 컬럼 서브쿼리
    > 서브쿼리의 결과로 여러 개의 컬럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것
    > Oracle만 지원

    스칼라 서브쿼리
    > SELECT 절에서 사용되는 서브쿼리
    > 한 행, 한 컬럼 만을 반환하는 서브쿼리
    > JOIN으로도 변경이 가능

    - Inline View, Dinamic View
    > FROM 절에서 사용되는 서브쿼리
    > 실행 시에 동적으로 생성된 테이블인 것처럼 사용할 수 있음
    > DB에 해당 정보가 저장되지 않음



'SQLD' 카테고리의 다른 글

윈도우 함수  (0) 2019.10.25
그룹함수  (0) 2019.10.25
계층형 질의 / 셀프 조인  (0) 2019.10.25
집합연산자  (0) 2019.10.25
표준조인  (0) 2019.10.24