뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해, 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상의 테이블(virtual table)
이다.
뷰를 가상 테이블이라고 하는 이유는 테이블은 디스크 공간이 할당되어 데이터를 저장할 수 있지만,
뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장하고 디스크에 저장 공간이 할당되지 않는다.
(저장장치내에 물리적으로 존재하지 x)
일반 사용자들은 SQL문을 사용하여 테이블에 저장된 데이터를 검색하고 조작하는 것과 유사하게 뷰를 이용할 수 있다. (대개 SELECT를 위해 사용)
VIEW의 특징
- 뷰는 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하고 조작도 기본 테이블과 거의 같다.
- 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
- 데이터의 논리적 독립성을 제공할 수 있다.
- 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.
- 뷰를 통해서만 데이터에 접근하게 되면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
- 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신, 연산이 가능하다.
- 일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면, 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.
VIEW 사용의 장단점
장점
- 논리적 독립성을 제공한다.(데이터 독립성 제공)
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해준다.
- 사용자의 데이터 관리를 간단하게 해준다.(복잡한 질의를 단순화)
- 접근 제어를 통한 자동 보안이 제공된다.
- 다양한 접근 경로 설정
- 동일한 데이터를 또 다른 뷰로 표현 가능
- 한 개의 뷰에 여러 테이블의 데이터를 검색 가능
- 한 개의 테이블로부터 여러 뷰를 생성 가능
단점
- 독립적인 인덱스를 가질 수 없다.
- 뷰의 정의를 변경할 수 없다. ALTER 문을 사용할 수 없다.
- 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신, 연산에 제약이 따른다.
구문
뷰 정의문
문법
CREATE VIEW 뷰이름[(속성이름[,속성이름])] AS SELECT문;
예제
--맛집 테이블에서 종류가 한식인 맛집의 이름, 위치를 한식맛집이라는 뷰로 만들자--
CREATE VIEW 한식맛집(이름, 위치)
AS SELECT
FROM 맛집
WHERE 종류 = '한식'
뷰 삭제문
뷰는 ALTER문을 사용하여 변경할 수 없다. 변경이 필요한경우 삭제후 재생성해야한다.
문법
DROP VIEW 뷰이름 [RESTRICT or CASCADE]
- RESTRICT : 뷰를 다른곳에서 참조하고 있으면 삭제가 취소된다.
- CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.
예제
--한식맛집이라는 뷰를 삭제하자--
DROP VIEW 한식맛집 RESTRICT
reference
- https://webcache.googleusercontent.com/search?q=cache:ek-_ULcQaJ8J:https://coding-factory.tistory.com/224+&cd=1&hl=ko&ct=clnk&gl=kr
- https://webcache.googleusercontent.com/search?q=cache:GxwDrN_QPlgJ:https://ko.wikipedia.org/wiki/VIEW_(SQL)+&cd=2&hl=ko&ct=clnk&gl=kr
- https://webcache.googleusercontent.com/search?q=cache:Ev-7jXLcYAwJ:https://sassun.tistory.com/92+&cd=3&hl=ko&ct=clnk&gl=kr
'Database' 카테고리의 다른 글
WITH 절 (0) | 2022.05.08 |
---|---|
SQL - DCL(제어어) (0) | 2022.05.08 |
SQL - DDL(정의어) (0) | 2022.05.08 |
SQL - DML(조작어) (0) | 2022.05.08 |