본문 바로가기
Oracle

Oracle Review : 서브 쿼리

by Growing time 2022. 7. 23.
반응형

 

서브 쿼리

 

문제 : Abel보다 급여가 많은 사원은 누구인가?

ð  질문 1 : Abel의 급여는 얼마인가?

ð  질문 2 : 어느 사원의 급여가 Abel보다 많은가?

 

문제에 대한 질문 사항을 나눠서 작성해야할때 서브쿼리를 이용한다.

 

 

 

서브쿼리를 이용한 SQL

           SELECT  ~

           FROM   ~

           WHERE  ~ 연산자 (SELECT ~ FROM ~ WHERE ~)

 

 

 

 

지침

 

  •      서브 쿼리는 괄호로 묶어야 한다!!

 

  • 단일(다중) 행 서브 쿼리에는 단일(다중) 행 연산자 사용한다.

 

  •      서브 쿼리는 ORDER by 절을 Top-N분석을 수행하지 않을 경우 필요 없다.

 

  •      서브 쿼리는 최대 255개까지 사용할 수 있다.

 

  •      WHERE절, 그룹Having절에서 서브 쿼리 사용할 수 있다.

            group by department_id

            having min(salary) > (select min(salary) from employees where department_id = 50)

  •      서브 쿼리 내에서 그룹 함수를 쓸 수 있다.

            where salary = (select min(salary) from employees)

 

 

 

단일 행 서브 쿼리

 

서브 쿼리의 결과 값이 단일 행이며 단일 칼럼이나 다중 칼럼으로 반환

 

  

다중 행 서브 쿼리

 

다중 행 연산자와 함께 사용해야한다.

 

ð  메인 쿼리의 비교 조건이 서브 쿼리의 결과 중에서

  •   IN                   : 하나라도 일치하면 참이 되는 연산자

 

  •   ANY, SOME        : 하나이상 일치하면 참이 되는 연산자

               WHERE salary ▣ ANY (400, 700, 900)

              <  ANY  :  900(최대값)보다 작음

              >  ANY  :  400(최소값)보다 큼

              =  ANY  :  In과 동일함

 

  •       ALL                 : 모든 값이 일치하면 참이 되는 연산자

            WHERE salary ALL (400, 700, 900)

              <  ALL  : 400(최소값)보다 작음

              >  ALL  : 900(최대값)보다 큼

 

  •  EXISTS             : 하나라도 반환하면 참이 되는 연산자

 

  •   Not                 : IN, ANY, ALL연산자와 함께 사용 가능하며 널 값이 포함될 가능성이 있는 경우 Not in 연산자 사용 X

 

 

 

 

 

 

 

 

 

 

반응형

댓글