본문 바로가기

Programming/[DB]

[DB] VIEW

VIEW

 '보다'라는 의미를 가지고 있는데 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터 ㅂ이스 객체

 뷰를 가상 테이블이라고도 부르는데, 뷰는 테이블과 거의 흡사하게 사용하기 떄문이다

 뷰는 실제 데이터가 저장되는 것은 아니지만 뷰를 통해 데이터를 관리할 수 있다

 

뷰를 왜 가상 테이블이라고 할까

뷰는 데이터를 물리적으로 가지고 있지 않다

뷰의 사용 용도는 테이블과 동일하지만 데이터 저장 공간이 없다

 

특징

 뷰눈 테이블에 대한 제한을 가지고 있기에 테이블의 일정 부분만 확인할 수 있는 가상의 테이블임

 뷰가 정의된 기본 테이블이 변경되면, 뷰도 자동적으로 변경

 외부 스키마는 뷰의 기본테이블 정의로 구성

 뷰의 검색은 테이블의 검색과 동일하지만 DML문 사용에는 제약이 따름

 DBA는 보안적인면에서 뷰를 활용할 수 있다

 뷰는 CREATE문으로 DEFINE되고 SYSVIEW에 SAVE 됨

 생성된 테이블에 대한 뷰의 개수는 제한이 없다

 뷰는 실제 자료를 갖지는 않지만 뷰를 통해 테이블을 관리할 수 있다

 

 

뷰의 장단점

 

 

뷰의 생성

 뷰를 생성하기 위해서는 테이블과 같이 CREATE 문을 사용한다 테이블과 달리 뷰는 이미 존재하는 테이블을 근거로 한 쿼리문 형태로 저장되므로 기본 테이블이 있어야한다

 * 기본테이블 : 뷰에 의해 제한적으로 접근해서 사용하는 실질적으로 데이터를 저장하고 있는 물리적인 테이블

 

 

기본테이블에 의해 파생된 뷰는 마치 테이블 처럼 DML문을 사용할 수 있다. 앞에서 설명했듯이 뷰는 존재하는 테이블에 의해 파생된 가상 테이블 이므로 DML문이 실행되면 그 뷰를 정의한 기본 테이블이 변경된다

 

 

 

 

명령어

CREATE OR REPLACE VIEW

뷰의 구조 변경시 삭제 후 재생성 해야 됨

FORCE 기본 테이블의 존재여부를 따지지 않고 뷰 생성

WITH CHECK OPTION 해당 뷰의 범위내에서만 DML문가능

WITH READ ONLY : DML문 불가, SELECT만 가능

 

뷰의 조회

 뷰의 조회도 일반적인 테이블처럼 SELECT문을 사용한다 뷰의 정보를 살펴보면 테이블처럼 디스크에 물리적으로 데이터가 저장되어 있지 않고 뷰를 정의할 때 작성한 SELECT문만 볼 수 있는걸 알수있다

 

동작원리

 사용자가 뷰에 대해서 질의를 하면 뷰에대한 정의를 조회한다

 기본테이블에 대한 뷰의 접근 권한을 조회한다

뷰에 대한 질의를 기본테이블에 대한 질의로 변환한다

기본테이블에 대한 질의를

 

뷰의 종류

 

뷰의 정의

보안 + 편의

 

 

 

 

'Programming > [DB]' 카테고리의 다른 글

[DB] INDEX & 동의어 & 시퀀스  (0) 2018.04.20
[DB] 스키마 & 파티션  (0) 2018.04.20
[DB] SUBQUERY  (0) 2018.04.20
[DB] JOIN  (0) 2018.04.20
[DB] 데이터의 무결성  (0) 2018.04.19