본문 바로가기
DBMS/데이터베이스

[데이터베이스] ep5) 뷰(view)

by 클레어몬트 2024. 7. 1.

ㅇ뷰(view): 하나 이상의 테이블을 합하여 만든 가상의 테이블 (SELECT문을 통해 얻은 검색 결과를 모아 나타내는 것)

여러 테이블을 이용하여 하나의 뷰 테이블을 생성한다

(이미 생성된 뷰를 기반으로 또 뷰를 생성 가능하다)

고객테이블 뷰 예시
학과테이블 뷰 예시

 

- 뷰 생성

CREATE VIEW 뷰_이름[(속성_리스트)]
AS SELECT문 -- 기본 테이블(참조 테이블)에 대한 SELECT문 작성
[WITH CHECK OPTION];

 

[WITH CHECK OPTION]: 생성한 뷰에 삽입이나 수정 연산을 할 때 SELECT문에서 제시한 뷰의 정의 조건을 위반하면 수행되지 않도록 하는 제약조건 지정

 

 

뷰 생성 예제

 

 

 

 

- 뷰 삭제

DROP VIEW 뷰_이름;

 

- 특정 뷰가 삭제하려 하는 뷰를 참조하고 있는 제약 조건을 가진 경우, 뷰 삭제가 불가능하므로 관련 제약 조건 삭제부터 수행해야 한다

- 가상의 테이블이므로 뷰를 삭제하더라도 참조했던 테이블(기본 테이블)은 영향을 받지 않는다 (당연한 소리)

 

+ 뷰는 ALTER문으로 정의 변경이 불가능하다 뷰의 정의를 변경하려면 기존 뷰를 삭제(DROP VIEW)하고, 새로운 정의로 다시 생성(CREATE VIEW)해야 한다 이를 효과적으로 처리하기 위해 CREATE OR REPLACE VIEW 문을 사용할 수가 있다

(CREATE OR REPLACE VIEW 문은 뷰가 존재하지 않는 경우 뷰를 생성하고, 뷰가 이미 존재하는 경우 기존 뷰를 새 정의로 대체한다)

 

 

 

 

 

- 뷰 업데이트

UPDATE 테이블_이름
SET 속성_이름1 = 값1, 속성_이름2 = 값2, ... -- 튜플의 속성값 수정
[WHERE 조건]; -- 만약 조건 미지정 시 모든 튜플을 수정하게 된다

 

그냥 UPDATE문과 똑같다! ep4-2) DML의 UPDATE문을 참고하자

https://claremont.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-ep4-2-SQL-DML

 

[데이터베이스] ep4-2) SQL: DML

ㅁDML(Data Manipulation Language): 데이터 조작어  ① SELECT / FROM문: 테이블 내 데이터를 검색SELECT [ALL | DISTINCT] 속성_리스트FROM 테이블_리스트; -- (테이블 이름)만약 테이블에서 검색하고 싶은 속성 및

claremont.tistory.com

 

 

 

 

 

 

- 뷰 조작

뷰 테이블 내 튜플 값 수정 O

INSERT문, DELETE문 O

 

하지만 아래와 같은 경우, DML을 사용할 수 없다

[변경 불가능한 뷰]

- 기본 테이블(참조 테이블)의 기본키를 구성하는 속성이 포함되어 있지 않은 뷰 (참조 테이블의 기본키가 있어야 DML을 사용할 수 있다)

- 기본 테이블에서 NOT NULL로 지정된 속성이 포함되어 있지 않은 뷰

- 기본 테이블에 있던 내용이 아닌 집계 함수로 새로 계산된 내용을 포함하는 뷰

- DISTINCT 키워드를 포함하여 정의한 뷰

- GROUP BY 절을 포함하여 정의한 뷰

- 여러 개의 테이블을 조인하여 정의한 뷰

 

 

변경 불가능한 뷰 예제

 

 

 

 

 

 

 

 

 

 

 

출처 및 참고: 세종대학교 K-MOOC 데이터베이스 보안(김영갑)