본문 바로가기

SQL 문 STUDY

SQL 서브쿼리 - (IN/ALL/ANY/EXISTS/NOT EXISTS)

개발자 11번째 이야기

 

Subquery

- subquery는 다른 SELECT 문의 절에 포함되는 SELECT

- 괄호로 감싸서 사용하며 단일행 비교 연산자의 경우 서브쿼리의 결과가 반드시 1건 이하여야 함.

- 복수행 비교 연산자의 경우 건수 상관없음.

 

 

Subquery 그룹 함수

 

서브 쿼리가 사용 가능한 곳

● select

● from

● where

● having

● order by

● insert의 values

● update의 set

 

여러 행의 Subquery

 

IN

위의 예시는 job_id가 IT_PROG의 연봉을 불러

● 리스트의 임의 멤버와 같음

 

 

ANY

위의 예시는 최대값보다 작은값들의 조건에 부합하며 IT_PROG가 아닌 값들을 출력함

● =, !=, >, <, <=, >= 연산자가 앞에 있어야 합니다. 
        < ANY는 최대값보다 작음을 의미합니다
        > ANY는 최소값보다 큼을 의미합니다.
        = ANY는 IN과 같습니다.

 

ALL

위의 예시는 최소값보다 작은 값들의 조건에 부합하며 IT_PROG가 아닌 값들을 출력함

     subquery에서 반환되는 모든 값과 비교합니다.
        > ALL은 최대값보다 큼을 의미합니다.
        < ALL은 최소값보다 작음을 의미합니다

 

 

EXISTS

● subquery에서 최소한 한 개의 행을 반환하면 TRUE로 평가됨

● 서브 쿼리의 결과가 한 건이라도 존재하면 TRUE 없으면 FALSE를 출력.

 

 

NOT EXISTS

● EXISTS와 반대로 서브쿼리에 데이터가 존재하지 않을 경우 데이터가 조회됨.

 

 

 

Subquery의 null 값

● 반환되는 값 중 하나가 null이면 전체 query가 행을 반환하지 않음.

● null 값을 비교하는 모든 조건은 결과가 null이기 때문