Database

VIEW (뷰)

뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해, 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상의 테이블(virtual table)이다.

 

뷰를 가상 테이블이라고 하는 이유는 테이블은 디스크 공간이 할당되어 데이터를 저장할 수 있지만,
뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의만 저장하고 디스크에 저장 공간이 할당되지 않는다.

(저장장치내에 물리적으로 존재하지 x)

일반 사용자들은 SQL문을 사용하여 테이블에 저장된 데이터를 검색하고 조작하는 것과 유사하게 뷰를 이용할 수 있다. (대개 SELECT를 위해 사용)

 

VIEW의 특징

  1. 뷰는 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하고 조작도 기본 테이블과 거의 같다.
  2. 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
  3. 데이터의 논리적 독립성을 제공할 수 있다.
  4. 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.
  5. 뷰를 통해서만 데이터에 접근하게 되면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
  6. 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신, 연산이 가능하다.
  7. 일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
  8. 뷰가 정의된 기본 테이블이나 뷰를 삭제하면, 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

 

VIEW 사용의 장단점

장점

  1. 논리적 독립성을 제공한다.(데이터 독립성 제공)
  2. 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원해준다.
  3. 사용자의 데이터 관리를 간단하게 해준다.(복잡한 질의를 단순화)
  4. 접근 제어를 통한 자동 보안이 제공된다.
  5. 다양한 접근 경로 설정
  6. 동일한 데이터를 또 다른 뷰로 표현 가능
  7. 한 개의 뷰에 여러 테이블의 데이터를 검색 가능
  8. 한 개의 테이블로부터 여러 뷰를 생성 가능

단점

  1. 독립적인 인덱스를 가질 수 없다.
  2. 뷰의 정의를 변경할 수 없다. ALTER 문을 사용할 수 없다.
  3. 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신, 연산에 제약이 따른다.

 

구문

뷰 정의문

문법

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