본문 바로가기
DBMS/ORACLE

[ORACLE] 오라클_VIEW(뷰) 테이블 생성 및 삭제

by 썸머워즈 2019. 2. 19.
반응형

뷰(VIEW)

  • 하나의 가상 테이블이다.(여러개의 테이블에서 원하는 값만을 가져와 가상 테이블 뷰를 만들어 사용한다.)
  • 다수의 테이블에서 자주 가져오는 즉, 사용하는 값들을 모아서 만드는 형식으로 주로 사용된다.

뷰(VIEW)는 다음과 같은 제한 조건을 가진다.

- 테이블에 데이터가 NULL인 컬럼은 뷰에 포함할 수 없다.

- WITH READ ONLY 옵션을 준 뷰는 갱신이 불가능 하다.

- WITH CHECk OPTION을 설정한 뷰는 조건에 해당하는 데이터만 갱신이 가능하다.

- 가상컬럼(ROWID, ROWNUM, NEXTVAL, CURRVAL)에 대한 참조를 포함한 뷰는 어떠한 데이터도 INSERT가 불가능하다.

 

뷰 테이블의 경우 INSERT 같은 것들도 가능하다고는 하는데, SELECT를 하는 용도로만 사용하는 것을 추천한다.


▷ 구문

CREATE [OR REPLACE]
     [FORCE | NOFORCE]
     VIEW [뷰 이름] AS [서브쿼리]
     [WHERE 조건] [WITH CHECK OPTION] [WITH READ ONLY]

* FORCE: 기본 테이블 유무에 상관없이 VIEW를 생성한다.

* WITH CHECK OPTION: VIEW에 의해 엑세스될 수 있는 행만이 입력되거나 변경될 수 있음을 지정한다.

* WITH READ ONLY: SELECT만 가능한 VIEW를 생성한다.

* 함수를 사용한 컬럼은 반드시 ALIAS를 지정해야한다.

뷰(VIEW) 생성

뷰를 생성하기 위해선 위의 문번에서 진하게 검은색으로 표시된 항목은 필수적으로 들어가야한다.

(굳이 생략을 하자면 WHERE조건을 생략이 가능하긴 하다.)

기본 생성문

CREATE OR REPLACE VIEW vw_emp AS 
SELECT e.ename, e.job, d.deptno, d.deptname, d.loc
    FROM emp e, dept d 
    WHERE d.deptno = e.deptno;

읽기 전용 생성문

CREATE OR REPLACE VIEW vw_readonly AS 
SELECT e.ename, e.job, d.deptno, d.deptname, d.loc
    FROM emp e, dept d 
    WHERE d.deptno = e.deptno WITH READ ONLY;

WITH CHECK OPTION 생성문 (별로 권장하지 않는다.)

CREATE OR REPLACE VIEW vw_cud AS 
SELECT e.ename, e.job, d.deptno, d.deptname, d.loc
    FROM emp e, dept d 
    WHERE d.deptno = e.deptno 
    WITH CHECK OPTION;

WHERE 조건에 명시된 조건에 부합되는 데이터만 INSERT 또는 UPDATE가 가능하나, 뷰에서는 SELECT를 제외한 나머지 기능들은 권장하지 않는다.

뷰(VIEW) 조회

그냥 테이블 조회와 크게 다를건 없다.

SELECT * FROM vw_emp;

뷰(VIEW) 삭제

삭제 역시 테이블 삭제와 동일하지만 VIEW를 명시해주기만 하면 된다.

DROP VIEW vw_emp;
반응형


댓글

TOP