Published 2022. 11. 24. 16:46

 < VIEW 뷰 >

    SELECT문 (쿼리문)을 저장해둘 수 있는 객체 
    (자주 쓰는 긴 SELEC문 저장해두면 매번 긴 SELECT문 다시 기술할 필요 없음)
    임시테이블 같은 존재 (실제 데이터가 담겨있는건 아님! -> 논리적인 테이블

 

 ✅ VIEW를 생성하기 위해서는 계정에 권한 부여 해야함

GRANT CREATE VIEW TO BR; --> 관리자계정 실행

 

 1.  VIEW 생성


    [기본표현법]
    CREATE  [OR REPLACE]  VIEW  뷰명 
     AS 저장시키고자하는 쿼리문 
    
    [OR REPLACE]  : 뷰 생성시 중복된 이름의 뷰가 없으면 새로이 뷰를 생성
                                    중복된 이름의 뷰가 있다면 해당 뷰를 변경(갱신)하는 옵션

CREATE VIEW VW_EMPLOYEE
AS SELECT EMP_ID,EMP_NAME,DEPT_TITLE,SALARY,NATIONAL_NAME,BONUS
    FROM EMPLOYEE E
    JOIN DEPARTMENT D ON(E.DEPT_CODE = D.DEPT_ID)
    JOIN LOCATION L ON (D.LOCATION_ID = L.LOCAL_CODE)
    JOIN NATIONAL N ON (L.NATIONAL_CODE = N.NATIONAL_CODE);

- VIEW 수정시에는 CREATE OR REPLACE VIEW 구문을 사용하면 됨

CREATE OR REPLACE VIEW VW_EMPLOYEE 
AS SELECT EMP_ID,EMP_NAME,DEPT_TITLE,SALARY,NATIONAL_NAME,SALARY
    FROM EMPLOYEE E
    JOIN DEPARTMENT D ON(E.DEPT_CODE = D.DEPT_ID)
    JOIN LOCATION L ON (D.LOCATION_ID = L.LOCAL_CODE)
    JOIN NATIONAL N ON (L.NATIONAL_CODE = N.NATIONAL_CODE);

 

2. 뷰 컬럼에 별칭 부여 

  서브쿼리 SELECT절에 산술연술식, 함수식을 기술했을 경우 반드시 별칭을 지정해야함 

CREATE OR REPLACE VIEW VW_EMP_JOB
AS SELECT EMP_ID,EMP_NAME,JOB_NAME,
          DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여',3,'남',4,'여')
         ,EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)
    FROM EMPLOYEE
    JOIN JOB USING (JOB_CODE);

>> 오류 : 산술연산식, 함수식에 별칭을 부여하지 않았을 경우 뷰 생성 불가 

  별칭 부여 방법 1) 

CREATE OR REPLACE VIEW VW_EMP_JOB
AS SELECT EMP_ID,EMP_NAME,JOB_NAME,
          DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여',3,'남',4,'여')"성별"
         ,EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)"근무년수"
    FROM EMPLOYEE
    JOIN JOB USING (JOB_CODE);

별칭 부여 방법 2)  단, 모든 컬럼에 대한 별칭을 작성해야함 

CREATE OR REPLACE VIEW VW_EMP_JOB(사번,이름,직급명,성별,근무년수)
AS SELECT EMP_ID,EMP_NAME,JOB_NAME,
          DECODE(SUBSTR(EMP_NO,8,1),1,'남',2,'여',3,'남',4,'여')
         ,EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE)
    FROM EMPLOYEE
    JOIN JOB USING (JOB_CODE);

>> 별칭 부여시 SELECT절에서 사용 가능

SELECT 이름,직급명
FROM VW_EMP_JOB
WHERE 근무년수 >= 20;

SELECT *
 FROM VW_EMP_JOB
 WHERE 성별 = '여';

 

-- 뷰 삭제  (DROP VIEW)

DROP VIEW VW_EMP_JOB;

 

 

'ORACLE' 카테고리의 다른 글

ORACLE 11. OBJECT (VIEW) _ VIEW 옵션  (0) 2022.11.24
ORACLE 11. OBJECT (VIEW) _ DML  (0) 2022.11.24
ORACLE 10. TCL (COMMIT, ROLLBACK,SAVE POINT)  (0) 2022.11.24
ORACLE 09. DCL(GRANT, REVOKE)  (0) 2022.11.24
ORACLE 08. DDL (ALTER, DROP)  (0) 2022.11.23
복사했습니다!