논리적 가상 테이블
--> 테이블 모양을 하고 있지만, 실제로 값을 저장하고 있지는 않음!!
- VIEW 사용 목적
- 복잡한 SELECT문을 쉽게 재사용하기 위해
- 테이블의 진짜 모습을 감출 수 있어 보안상 유리
- VIEW 사용 시 주의사항
- 가상의 테이블이므로 ALTER 구문 사용 불가
- VIEW를 이용한 DML 사용 가능, BUT 많은 제약이 따르기 때문에 SELECT(조회) 용도로만 사용하는 것 권장
CREATE [OR REPLACE][FORCE | NOFORCE] VIEW 뷰이름 [별칭]
AS SUBQUERY
[WITH CHECK OPTION][WITH READ ONLY];
그 전에 권한 부여 필수!
1) SYS 관리자 계정 접속
2) ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
3) GRANT CREATE VIEW TO kh;
VIEW 생성 구문 다시 실행
VIEW에 INSERT 시 가상의 테이블인 VIEW에 데이터가 삽입된 것 이 아님!
원본 테이블에 존재한다!
즉, VIEW를 이용한 DML 구문이 원본에 영향을 미친다!
VIEW에 INSERT 시 VIEW에 포함되지 않은 원본테이블의 컬럼은 NULL이 삽입되는데
만약 VIEW에 포함되지 않은 컬럼에 NOT NULL 제약조건이 설정되어 있는 경우 정상적인 INSERT가 진행되지 않는다!
==> VIEW의 본래 목적인 보여지는 것(조회)라는 용도에 맞게 사용하자 !!
CREATE OR REPLACE VIEW V_DCOPY2
AS SELECT DEPT_ID, LOCATION_ID FROM DEPARTMENT
WITH READ ONLY; -- 읽기전용 VIEW 생성(SELECT만 가능)