。공부 。

<DB> 뷰(View)

kyoe 2007. 11. 14. 10:20
* 뷰(View)의 개념 *
- 뷰는 하나 이상의 기본 테이블에서 유도되는 가상(Virtual)테이블이다. 즉, 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 보인다.
- 뷰를 생성하면 뷰 정의가 시스템 내에 저장되었다가, 생성된 뷰 이름을 질의어 에서 사용할 경우 질의어가 실행될 때 뷰에 정의된 기본 테이블로 대체되어 기본 테이블에 대해 실행된다.

* 뷰(View)의 특징 *
- 뷰는 기본 테이블에서 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 가지며, 조작도 기본테이블을 사용하는 것과 유사하다.
- 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
- 필요한 테이터만을 뷰로 정의해서 처리할수 있기 때문에 관리가 용이하고 명령문이 간단하다.
- 뷰를 통해서만 데이터에 접근함으로써 뷰에 나타나지 않는 데이터를 안전하게 보호할수있다.
- 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야만 삽입, 삭제 갱신 연산이 가능하다.
- 정의된 뷰는 다른 뷰의 정의에 기초가 될수 있다.

*  뷰(View)연산 시의 제약성 *
- 뷰의 열이 테이블의 열(속성)이 아닌 상수, 계산식, 그룹함수를 사용해 만들어 졌다면 그 뷰는 변경할수 없다.
- DISTINCT, GROUP BY, HAVAING을 사용해 만들어진 뷰는 변경할 수 없다.
- 둘 이상의 테이블에서 유도된 뷰는 변경할 수 없다.
- 변경하지 못하는 뷰를 토대로 하여 생성된 부는 변경할 수 없다.

* CREATE VIEW *
= 표기 형식 =
CREATE VIEW 뷰명[(속성명[,속성명])]
AS SELECT문
[WITH CHECK OPTION];
- AS SELECT문 : 일반 SELECT문과 같으며, UNION이나 ORDER BY를 사용할수 없다.
- WITH CHECK OPTION : 뷰에 대한 갱신이나 삽입 연산이 실행될 때 뷰의 정의 조건을 위해하면 실행을 거부한다.
- 속성명을 기술하지 않으면, SELECT문의 속성명이 자동으로 뷰의 속성명이된다.

예) <학생>테이블에서 학과가 "컴퓨터과학과"인 학생의 학번, 이름, 학과 속성을 갖는 뷰를 'DB_학생"이라는 이름으로 정의하시오.
CREATE VIEW DB_학생
AS SELECT 학번,이름,학과
FROM 학생
WHERE 학과 = '컴퓨터과학과'
WITH CHECK OPTION;

* DROP VIEW *
= 표기 형식 =
DROP VIEW 뷰명 {RESTRICT | CASCADE};
- RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 제거가 취소된다.
- CASCADE : 뷰를 참조하는 다른뷰나 제약 조건까지 모두 제거한다.

예)
DROP VIEW DB_학생 RESTRICT;

- 자료참고 : 기사친구(www.gisa79.com) -