Database
11.23.(수) OracleDB(14): VIEW 테이블
콜라든포비
2022. 11. 27. 00:02
VIEW 테이블
VIEW 테이블은 하나의 가상 테이블이라고 생각하면 된다.
실제로 데이터가 저장되진 않지만, VIEW를 통해 데이터를 관리할 수도 있다.
VIEW의 제한 조건
테이블의 NOT NULL 필드는 반드시 뷰에 포함되어야 한다.
ROWID, ROWNUM, NEXTVAL, CURRVAL 등 가상필드에 대한 참조를 포함하고 있는 뷰엔 어떤 데이터도 INSERT할 수 없다.
WITH READ ONLY 옵션을 설정한 뷰에선 데이터를 갱신할 수 없다.
WITH CHECK OPTION을 설정한 뷰는 뷰의 조건에 해당되는 데이터만 수정/삭제를 할 수 있다.
CREATE OR REPLACE VIEW emp_view
AS SELECT empno, ename, job, sal FROM emp;
SELECT * FROM emp_view;
SELECT * FROM user_views;
VIEW를 이용한 데이터 추가/수정/삭제
INSERT INTO emp_view(empno, ename, job, sal)
VALUES (5555, 'AAAA', 'OFFICE', 3500);
UPDATE emp_view SET job='ACCOUNT' WHERE empno=7369;
DELETE FROM emp_view WHERE job='MANAGER';
WITH READ ONLY
뷰에서 선택만 가능하도록 생성하는 옵션이다.
CREATE OR REPLACE VIEW emp_view_read
AS SELECT empno, ename, job, hiredate, sal FROM emp
WITH READ ONLY;
INSERT INTO emp_view_read(empno, ename, job, hiredate, sal)
VALUES (3333, 'BBBB', 'PLANNING', sysdate, 4000); --ERROR
WITH CHECK OPTION
CHECK OPTION이 붙으면, 해당 뷰는 CHECK OPTION의 조건에 해당하는 데이터만 수정할 수 있다.
CREATE VIEW emp_check
AS SELECT empno, ename, sal, deptno FROM emp
WHERE deptno=20 WITH CHECK OPTION;
INSERT INTO emp_check(empno, ename, sal, deptno)
VALUES (2222, 'CCCC', 4200, 20);
VIEW 삭제하기
DROP VIEW emp_check;
DROP VIEW emp_view;
DROP VIEW emp_dept;
DROP VIEW emp_view_read;