C. Oracle

oracle 서브쿼리

sfeg 2018. 1. 18. 21:24

- SubQuery     

=> 1. 하나의 select문안에 ( ) 를 이용하여 또 다른 select문이 존재하는것
     2. single row subquery앞에는  single  row operator( =,>....)가 와야한다.                      
     3. multiple row subquery앞에는 multiple row operator( IN... )가 와야한다. 
     4. subquery내에서는 정렬할 필요가 없다.( order by의 의미가 없다. )
         단, 8i R2부터 from절에 사용되는 subquery의 경우에는 사용가능하다.
          ps. main Query - SubQuery   => SubQuery먼저 만들고 main Query를 만들면 수월하다.
                 ex)  select ename,sal from  emp
                          where sal >= ( select sal from emp where ename='JONES');
 

- subquery가 반환하는 값이 몇개냐에 따라 아래와같이 나눌수 있다.
   # single    row subquery      -> 반환값이 하나
   # multiple row subquery      -> 반환하는 값이 2개이상
   # multiple column subquery -> 반환하는 컬럼이 2개이상
 
 
 
SUBQUERY 연산자 (True /False)
 
>ALL   
ex) ...where column >ALL(값1,값2,값3..)  
      column이 값1이보다 크고 AND column이 값2이보다 크고 AND column이 값3이보다 크냐?   
                
<ALL   
ex) ...where column <ALL(값1,값2,값3..)  
    column이 값1이보다 작고 AND column이 값2이보다 작고 AND column이 값3이보다 작냐?    
 
>ANY  
ex) ...where column >ANY(값1,값2,값3..)   
    column이 값1이보다 크거나 OR column이 값2이보다 크거나 OR column이 값3이보다 크냐?
 
<ANY  
ex) ...where column <ANY(값1,값2,값3..)   
   column이 값1이보다 작거나 OR column이 값2이보다 작거나 OR column이 값3이보다 작냐?