본문 바로가기
전공/Database

[이론] 뷰(VIEW)와 시스템 카탈로그

by 으녜 2022. 4. 4.
728x90
※ 뷰(VIEW)

: 하나 이상의 테이블로부터 유도되어 만들어진 가상 테이블로 처리 과정 중의 중간 내용이나 기본 테이블 중 일부 내용을 검색해 보여주거나 별도로 관리하고자 하는 경우 사용하는 임시 테이블

 

뷰는 실제 물리적으로 공간을 차지하지 않으며, 논리적 독립성을 제공하고, 데이터 접근제어로 보안성을 향상시킨다.

 

 

▷ 뷰의 특징

  • 뷰가 정의된 기본 테이블이 제거되면, 뷰도 자동적으로 제거된다.
  • 뷰에 대한 검색은 일반 테이블과 거의 동일하다.
  • 뷰에 대한 삽입, 삭제, 갱신은 제약이 따른다. 뷰의 속성에 기본 테이블의 기본키가 포함되어 있지 않으면 삽입, 삭제, 갱신이 되지 않는다.
  • 보안 측면에서 뷰를 활용할 수 있다.
  • 뷰는 ALTER 문을 이용하여 변경할 수 없다.
  • 한 번 정의된 뷰는 변경할 수 없으며, 삭제한 후 다시 생성해야 한다.

 

 

1. 뷰 생성

뷰를 생성하기 위해서는 CREATE 명령문을 이용한다.

CREATE VIEW 뷰_이름[(뷰_속성이름)]  : 뷰의 이름과 뷰를 구성할 속성 이름 기입
AS SELECT 기본테이블의 속성_이름  : 뷰를 만들기 위한 기본 테이블의 속성 이름, 이때 기본 테이블의 속성 이름과 뷰의 속성 이름을 다르게 부여할 수 있으며, 뷰의 속성 이름을 생략한 경우 기본 테이블의 속성 이름과 동일
FROM 기본테이블_이름 : 뷰를 만들기 위한 기본 테이블 이름
[WHERE 조건]
[WITH CHECK OPTION];   : 뷰에 대한 갱신, 삽입, 수정 등의 연산 시 WHERE 절의 조건에 맞지 않으면 실행 되지 않음

 

 

예 ) [학생] 테이블에서 3학년 학생의 학번과 성명, 연락처 속성을 이용하여 학번, 이름, 전화번호 속성으로 구성된 '3학년연락처' 뷰를 생성하시오.

 

CREATE VIEW 3학년연락처(학번,성명,연락처)

AS SELECT 학번,성명,연락처

FROM 학생

WHERE 학년=3;

 

위 예에서 WITH CHECK OPTION을 사용하지 않으면 뷰를 만들고 난 후 2학년 학생의 자료가 삽입되고, 사용하지 않으면 3학년 외 학생은 삽입되지 않는다.

 

 

2. 뷰 삭제

: DROP 명령어를 이용해 삭제한다.

DROP VIEW 뷰_이름 [RESTRICT | CASCADE];

RESTRICT : 삭제할 요소가 참조 중이면 삭제가 취소됨

CASCADE : 삭제할 요소가 참조 중이더라도 삭제가 이루어지며, 연관된 모든 요소들도 삭제됨

 

예 ) 위에서 생성한 '3학년연락처' 뷰를 제거하고, 연관된 뷰들도 연쇄적으로 제거하시오.

 

DROP VIEW 3학년연락처 CASCADE;

 

 

※ 시스템 카탈로그

: 데이터베이스에 저장되어 있는 테이블, 인덱스, 뷰, 제약조건, 사용자 등 개체들에 대한 정보와 정보들 간의 관계를 저장한 것으로 그 자체가 하나의 작은 데이터 베이스이다.

 

 

▷ 시스템 카탈로그의 특징

  • 시스템 카탈로그는 데이터 사전이라고도 한다.
  • 시스템 카탈로그에 저장된 데이터를 메타 데이터라고 한다.
  • 시스템 카탈로그는 일반 테이블과 같이 시스템 테이블로 구성된다.
  • 일반 사용자도 시스템 카탈로그의 내용을 검색할 수 있지만, 시스템 카탈로그의 내용을 삽입, 삭제, 갱신 등은 불가능하다.
  • 갱신은 SQL문을 실행하면 시스템에 의해 자동적으로 이루어진다.

 

728x90

'전공 > Database' 카테고리의 다른 글

[HackerRank] MySQL : Weather Observation Station 1-5  (0) 2022.05.12
[실습] SQL문  (0) 2022.03.29
[이론] SQL 제어어(DCL)  (0) 2022.03.18
[이론] SQL 조작어(DML)  (0) 2022.03.15
[이론] SQL 정의어(DDL)  (0) 2022.03.14