※ 서브쿼리

1. 서브쿼리란? - 메인 쿼리문 안에 존재하는 또 다른 쿼리문으로 위치에 따라 다음과 같이 나눠진다.

1-1. 스칼라 서브쿼리(Scalar Subquery) - 주로 SELECT절에 위치하지만 컬럼이 올 수 있는 대부분의 위치에 사용 가능하다. 컬럼 대신 사용되므로 반드시 하나의 값만 반환해야 하며 그렇지 않은 경우 에러를 발생한다.

1-2. 인라인 뷰(Inline View) - FROM절 등 테이블명이 올 수 있는 위치에 사용가능하다.

1-3 중첩 서브쿼리(Nested Subquery) - WHERE절과 HAVING절에 사용가능하며 메인 쿼리와의 관계에 따라 다음과 같이 나뉜다.

① 메인 쿼리의 컬럼 존재 여부

㉮ 비연관 서브쿼리(Un-Correlated Subquery) - 서브쿼리 내에 메인 쿼리의 컬럼이 존재하지 않는다. 

연관 서브쿼리(Correlated Subquery) - 서브쿼리 내에 메인 쿼리의 컬럼이 존재한다. 

② 반환하는 데이터 형태

㉮ 단일 행 서브쿼리 - 항상 1건 이하의 행만 반환하며 특정 비교 연산자(=, <, <=, >, >=, <>)와 함께 사용한다.  

㉯ 다중 행 서브쿼리 - 2건 이상의 행을 반환하며 특정 비교 연산자(IN, ALL, ANY, SOME, EXISTS)와 함께 사용한다.

* IN 연산자 - 메인 쿼리의 비교조건이 서브쿼리의 출력결과와 하나라도 일치한 데이터를 반환

* ALL 연산자 - 메인 쿼리의 비교조건이 서브쿼리의 출력결과와 모두 일치한 데이터를 반환

* ANY, SOME 연산자 - 메인 쿼리의 비교조건이 서브쿼리의 출력결과와 하나 이상 일치한 데이터를 반환

* EXIST 연산자 - 서브쿼리의 출력결과가 하나라도 존재하면 참

㉰ 다중 컬럼 서브쿼리 

+ Recent posts