티스토리 뷰

Database/Oracle

[Oracle] VIEW

best 2016. 2. 18. 15:19

VIEW : 가상의 테이블을 생성한다.

복잡한 쿼리를 단순하게 만들 수 있다.

 

 

 

 

 

 

실습1 - LAST_NAME 에 u 가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 LAST_NAME 을 조회한다.

 

두 가지 방법으로 풀 수 있다.

첫번째로는 서브쿼리를 이용한 풀이

 

1
2
3
4
5
6
7
8
9
SELECT  EMPLOYEE+OD
        , LAST_NAME
FROM    EMPLOYEES
WHERE   DEPARTMENT_ID IN (
                          SELECT DEPARTMENT_ID
                          FROM EMPLOYEES
                          WHERE LAST_NAME LIKE '%u%'
                          )
;
cs

 

 

 

두번째 방법은 View를 이용한

 

1
2
3
4
5
6
7
8
9
10
SELECT  DISTINCT EMPLOYEE_ID
        , LAST_NAME
FROM    (
            SELECT  DEPARTMENT_ID  -- 구분할 수 있는 것을 조회해야 한다.
            FROM    EMPLOYEES
            WHERE   LAST_NAME LIKE '%u%'
        ) U_NAME
        , EMPLOYEES E
WHERE   U_NAME.DEPARTMENT_ID = E.DEPARTMENT_ID
;
cs

 

 

 

 

실습2 - 회사 전체 평균 연봉 보다 더 버는 사원들 중  -- INLINE VIEW

LAST_NAME 에 u 가 있는 사원들이 근무하는 부서에서  --INLINE VIEW                   문제를 끊어서 보면 어떤 것을 INLINE VIEW로 사용할지 쉽게 볼 수 있다.

근무하는 사원들의 사번, LAST_NAME 및 연봉을 조회한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT    DISTINCT EMPLOYEE_ID
          , LAST_NAME
          , SALARY
FROM     (
          /*LAST_NAME 에 u 가 있는 사원들이 근무하는 부서*/
            SELECT    DEPARTMENT_ID
            FROM      (
                      /* 회사 전체 평균 연봉 보다 더 버는 사원 */
                      SELECT EMPLOYEE_ID
                      FROM   EMPLOYEES
                      WHERE  SALARY > (  
                                        SELECT   AVG(SALARY)
                                        FROM     EMPLOYEES
                                        )
                    ) EMP2
                    , EMPLOYEES E
            WHERE     EMP2.EMPLOYEE_ID = E.EMPLOYEE_ID
            AND       LAST_NAME = '%u%'
        ) DEPT
        , EMPLOYEES E
WHERE   DEPT.DEPARTMENT_ID = E.DEPARTMENT_ID
;
cs

 

 

 

 

 

 

 

 

'Database > Oracle' 카테고리의 다른 글

[Oracle] DECODE, CASE-WHEN  (0) 2016.02.18
[Oracle] EXISTS  (0) 2016.02.18
[Oracle] 테이블 조인  (0) 2016.02.17
[Oracle] 테이블(Table) 설계  (0) 2016.02.17
[Oracle] 서브쿼리  (0) 2016.02.16
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함