[ SUB QUERY 개념 ]  

 

0. SUB QUERY

  1. 구성 : 서브쿼리는 InnerQuery 와 OuterQuery로 구성되어 있다.
2. 종류 : SINGLE ROW, MULTI ROW, MUTI COLUMN, CORRELATED 로 나뉘며,
          이 들 각각이 다시 중복되어 사용될 수 있으므로 SINGLE ROW MULTI COLUMN,
          MULTI ROW MULTI COLUMN, SINGLE ROW CORRELATED, MULTI ROW CORRELATED등으로
          세분화 될 수 있다.
1. SINGLE ROW 서브 쿼리
  1. 정의 : SELECT에서 결과로 나오는 행의 수가 단 한 행이며, 단 한 컬럼인 경우

2. 예)
FROM  TEMP
       
WHERE SALARY = (SELECT MAX(SALARY)  FROM  TEMP);
2. MULTI ROW 서브 쿼리
 

1. 정의 : SELECT에서 결과로 나오는 행의 수가 한 행 이상이며, 단 한 컬럼인 경우

2. 예)
FROM  TEMP
       
WHERE DEPT_CODE IN (SELECT DEPT_CODE FROM TDEPT  WHERE  AREA = '인천');

3. MULTI COLUMN 서브 쿼리
 

1. 정의 : SELECT에서 결과로 나오는 행의 수가 한 행 이상이며, 여러 컬럼인 경우

2. 예)
FROM  TEMP
       
WHERE (DEPT_CODE, EMP_ID) IN (SELECT DEPT_CODE, BOSS_ID FROM TDEPT WHERE AREA = '인천');

4. CORRELATED 서브 쿼리
 

1. 정의 : InnerQuery에서 OuterQuery의 어떤 컬럼 값을 사용하는 경우이다.
          InnerQuery(흔히 SUB QUERY라고 함)와 OuterQuery(흔히 MAIN QUERY라고 함)가 서로
          단순히 여관관계가 있는 것이 아니고 서로 값을 주고 받는 연관관계가 성립한다.

2. 참고 : 일반적인 서브쿼리는 SUBQUERY의 결과를 MAIN QUERRY가 이용한다.
          하지만 CORRELATED 서브쿼리는 SUB QUERRY가 MAIN QUERY의 값을 이용하고,
          그렇게 구해진 SUB QUERY의 값을 다시 MAIN QUERY가 다시 이용하게 된다.

3. 예)  
FROM   TEMP A
        
WHERE  SALARY  >  (SELECT AVG(SALARY)
                           
FROM   TEMP B
                           
WHERE  B.LEV  =  A.LEV);
  설명) 직원 중 자신의 연봉이 자신과 같은 LEV에 해당하는 직원의 평균 SALARY보다 많은 경우에
        이 사원의 사번과 성명을 읽어 오는 QEURY이다.

4. 예)
UPDATE  TDEPT  A
       
SET     A.BOSS_ID  =  (SELECT  MIN(B.EMP_ID)
                              
FROM    TEMP  B
                              
WHERE   B.DEPT_CODE  = A.DEPT_CODE);

5. ANY와 ALL
 

1. 정의 : ANY와 ALL 연산자는 서브쿼리와 함께 쓰이거나 값들의 집합과 함께 쓰여 비교된다.

2. 예) SALARY 가 (100, 200, 300)중의 어떤 값 하나보다 큰 값인가를 비교하고 싶을 때
       SALARY > ANY(100, 200, 300)

3. 예) ALL은 집합의 모든 값 보다 어떤가로 비교가 된다.
       SALARY > ALL(100, 200, 300)은  100, 200, 300모두 보다 큰 값인가?로 될 것이다.

4. 예)
FROM   TEMP
       
WHERE  SALARY > ANY (SELECT  SALARY
                            
FROM    TEMP
                            
WHERE   LEV = '과장');
   설명) 서브쿼리를 통해 LEV='과장'인 직원의 SALRY를 TEMP에서 읽고 이중의 어떤 값 하나보다
         큰 연봉을 가진 직원의 사번,성명, 연봉을 읽어오는 쿼리이다.

5. 예) FROM   TEMP
       
WHERE  SALARY > ALL (SELECT  SALARY
                            
FROM    TEMP
                            
WHERE   LEV = '과장');
   설명) 어떤 과장보다도 연봉이 많은 직원을 읽어온다.

 

 

 

'(DB) Oracle > SQL' 카테고리의 다른 글

Oracle - 예제_DELETE  (0) 2017.01.18
Oracle - ROWNUM 개념  (0) 2017.01.18
Oracle - JOIN 개념  (0) 2017.01.18
Oracle - PLAN_INDEX  (0) 2017.01.18
Oracle - HINT2  (0) 2017.01.18
Posted by 농부지기
,

                                 [ Join 개념 ]  

Join

  1. 종류 : CARTESIAN PRODUCT, EQUI JOIN, NON-EQUI JOIN, OUTER JOIN, SELF JOIN 등
1. CARTESIAN PRODUCT  Join

 
1. 정의 : 조건 절에 조인을 위한 조건이 기술되지 않은 경우
2. 결과 : 테이블 단위로 나올 수 있는 RECORD수의 곱으로 결과가 생성된다.
2. EQUI JOIN
  1. 정의 : 조건절에 조인 조건이 기술된 경우
3. NON EQUI JOIN
 

1. 정의 : JOIN조건 절에 조인 조건이 '='(equal)이 아닌 다른 연산기호로 주어지는 경우

2. 예)
FROM  TEMP  A,   EMP_LEVEL B
       
WHERE A.BIRTH_DATE  BETWEEN  ADD_MONTHS(SYSDATE, -1 * B.TO_AGE * 12)
                           
AND      ADD_MONTHS(SYSDATE, -1 * B.FROM_AGE * 12)

4. OUTER JOIN
 

1. 정의 : 두 개 이상의 테이블 조인 시 한쪽 테이블의 행에 대해 다른 쪽 테이블에 일치하는 행이
          없더라도 다른 쪽 테이블의 행을 Null로 하여 행을 Return 하는 조인이다.

2. 추가 : OUTER JOIN 기호(+)는 NULL열이 작성되어야 하는 쪽에 기호가 붙는다.
          하나의 테이블이 OUTER JOIN의 대상으로 삼을 수 있는 테이블의 수가 한 개 뿐이다.

3. 예)
FROM  TABLE1,  TABLE2, ....
       
WHERE TABLE1.COLUMN = TABLE2.COLUMN(+)

   설명) JOIN된 컬럼 값이 TABLE2에 없더라도 TABLE1에 있으면, TABLE2의 값들 중 TABLE1과
         일치되는 값이 없는 행은 모두 NULL로 RETURN 된다.

5. SELF JOIN  
 

1. 정의 : 다른 테이블간의 JOIN이 아닌 같은 테이블을 마치 다른테이블처럼 인식시켜
          JOIN을 하는 것이다.
2. SELF JOIN을 JOINING TABLE ITSELF 라고도 한다.

 

 

 

'(DB) Oracle > SQL' 카테고리의 다른 글

Oracle - ROWNUM 개념  (0) 2017.01.18
Oracle - SUB QUERY 개념  (0) 2017.01.18
Oracle - PLAN_INDEX  (0) 2017.01.18
Oracle - HINT2  (0) 2017.01.18
Oracle - HINT  (0) 2017.01.18
Posted by 농부지기
,

1 CONCATENATION PLAN 보는 방법

 

    1.1 정의 :

    2.1 INDEX 실제 Oracle에서 실행되는 과정 1

         - in을 사용한 index 검색 plan이다. 이때 CONCATENATION 도 발생한다.    

          

 

 

'(DB) Oracle > SQL' 카테고리의 다른 글

Oracle - SUB QUERY 개념  (0) 2017.01.18
Oracle - JOIN 개념  (0) 2017.01.18
Oracle - HINT2  (0) 2017.01.18
Oracle - HINT  (0) 2017.01.18
Oracle - DDL  (0) 2017.01.18
Posted by 농부지기
,