오라클 뷰(ORACLE VIEW), 인라인 뷰(Inline View), WITH CHECK OPTION, CREATE VIEW, DROP VIEW,
http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=639
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 할 수 없다.
12.2 복합 뷰(Complex View)
n BASE TABLE이 여러 개이며 함수나 그룹함수 등을 SELECT LIST에 가진 경우.
n INSERT, UPDATE, DELETE 허용 되지 않는다.
12.3 인라인 뷰(Inline View)
n 인라인 뷰는 스키마 오브젝트는 아니지만 FROM절에서 SELECT를 사용하여 테이블 처럼 사용될 데이터를 정의할 때 사용한다. 임시 뷰라고 할 수 있으며 이름없이 해당 SQL 라인내에 기술한다 하여 인라인 뷰라고 한다.
n 주로 조인 연산시 테이블의 데이터를 줄이기 위해, 분리된 쿼리를 하나의 쿼리에 모아서 사용하기 위해 사용한다
12.4 WITH CHECK OPTION
n 뷰의 쿼리가 SELECT 할 수 있는 ROW에 대해 INSERT, UPDATE 가능 하다.
n USER_CONSTRAINTS 뷰를 통해 생성된 제약조건을 확인 가능하다.
12.5 DROP VIEW
n 뷰를 삭제하는 명령.(USER_VIEWS 딕셔너리뷰에서 뷰 정의만 삭제됨)
n BASE TABLE은 삭제되지 않는다.
[형식]
DROP VIEW view_name;
댓글 없음:
댓글 쓰기