12. 뷰(VIEW)
n 하나 또는 그 이상의 테이블이나 뷰를 이용하여 생성되는 논리적인 테이블로 실제 데이터는 저장하지 않는다.
n 뷰를 생성하게 되면 데이터 딕셔너리에 뷰에 대한 정의만 저장되고, 뷰의 기본이 되는 테이블을 BASE TABLE 이라고 한다.
n 테이블의 전체 데이터중 일부칼럼, 일부 레코드만 보여주는 역할을 한다.
n 뷰를 통해 데이터를 입력, 수정, 삭제 가능하다.
n 뷰의 기본이 되는 테이블의 무결성 제약조건은 상속한다.
n 뷰 생성을 위해서는 CREATE VIEW 시스템 권한이 있어야 한다.
n 데이터의 보안과 사용 편의성을 제공한다.
[형식]
CREATE [OR REPLACE] [FORCE|NO FORCE] VIEW view_name [(alias[,alias]...)]
AS Subquery
[WITH READ ONLY]
[WITH CHECK OPTION [CONSTRAINT constraint]];
OR REPLACE : 이미 뷰가 존재 한다면 RE-CREATE 하라는 의미
FORCE : BASE TABLE의 존재유무와 관계없이 뷰 생성
NO FROCE : 기본 값이며, BASE TABLE이 존재해야 뷰 생성 가능하다.
ALIAS : BASE TABLE의 칼럼명과 다르게 주는 경우
WITH READ ONLY : 읽기 전용 뷰 생성
WITH CHECK OPTION : 뷰의 생성쿼리가 SELECT 할 수 있는 데이터만 INSERT, UPDATE, DELETE 가능하다.
CONSTRAINT constraint : 체크 제약 조건의 이름
12.1 단순 뷰(Simple View)
n BASE TABLE이 하나인 경우이며, 뷰를 통한 DML(Update, Insert, Delete)이 가능하다.
n View가 Join 조건, Aggregate 함수, GROUP BY 구, DISTINCT를 포함하는 경우 로우를 Delete할 수 없다
n View가 Join 조건, Aggregate 함수, GROUP BY 구, DISTINCT, expression으로 정의된 Column을 포함하는 경우 로우를 Update 할 수 없다.
n View가 Join 조건, Aggregate 함수, GROUP BY 구, DISTINCT, expression으로 정의된 Column, View로 선택되지 않은 NOT NULL칼럼을 포함하는 경우 로우를 Insert 할 수 없다.