1. 뷰의 개념
뷰 View
다른 테이블을 기반으로 만들어진 가상 테이블 virtual table
일반 테이블과 달리 데이터를 실제로 저장하고 있지 않다
create table로 만든 테이블은 기본 테이블 base table이며 뷰의 기반이 된다
2. 뷰의 생성
create view 문을 사용한다
create view 뷰이름[(속성 리스트)]
as select ~~
[with check option];
with check option은 생성한 뷰에 삽입, 수정 연산을 할때 select문에서 where의 뷰 정의 조건을 위반하면 수행되지 않도록 하는 제약조건을 의미한다
고객 테이블에서 등급이 vip인 고객의 아이디, 이름, 나이, 등급으로 구성된 뷰를 우수고객이라는 이름으로 생성하기
그후 우수고객 뷰의 모든 내용을 검색하기
create view 우수고객(아이디, 이름, 나이, 등급)
as select 아이디, 이름, 나이, 등급 from 고객
where 등급 = 'vip'
with check option;
3. 뷰의 활용
뷰도 일반 테이블처럼 원하는 데이터를 검색할 수 있다
가상 테이블임에도 어떻게 select로 데이터를 검색할 수 있는가?
뷰에 대한 select가 내부적으로는 기본 테이블에 대한 select로 변환되어 수행되기 때문이다
그러니 뷰에 select를 하는것은 사실 검색 -> 뷰 -> 기본 테이블 이 되는것이다
insert, update, delete도 뷰를 대상으로 수행이 가능하다
다만, 마지막 지점은 기본 테이블을 향하기에 결과적으로 기본 테이블이 변화한다. 그렇기에 사용에 주의를 요한다
다만, 변경이 불가한 뷰도 존재한다
- 기본 테이블의 기본키를 구성하는 속성이 포함되어 있지 않은 뷰는 변경할 수 없다
- 기본 테이블에 있던 내용이 아니라 집계 함수로 새로 계산된 내용을 포함하고 있는 뷰는 변경할 수 없다
- distinct 로 정의된 뷰는 변경할 수 없다
- group by를 포함하는 뷰는 변경할 수 없다
- 여러 개의 테이블을 조인하여 정의한 뷰는 변경할 수 없다
그런데 이러한 점에도 불구하고 뷰를 왜 사용하는가?
- 질의문을 좀 더 쉽게 작성할 수 있다
- 데이터의 보안 유지에 도움이 된다
- 데이터를 좀 더 편리하게 관리할 수 있다
4. 뷰의 삭제
drop view를 사용하여 삭제가 가능하다
뷰를 삭제하더라도 기본 테이블에는 영향을 주지 않는다
만약, 뷰를 참조하는 제약 조건이 존재한다면 삭제가 불가능하다
'공부 > 데이터베이스' 카테고리의 다른 글
| 7. 데이터베이스 언어 SQL / 총 정리 (0) | 2025.09.13 |
|---|---|
| 7. 데이터베이스 언어 SQL / 05 삽입 SQL (0) | 2025.09.13 |
| 7. 데이터베이스 언어 SQL / 03 SQL을 이용한 데이터 조작 (0) | 2025.09.11 |
| 7. 데이터베이스 언어 SQL / 02 SQL을 이용한 데이터 정의 (1) | 2025.09.11 |
| 7. 데이터베이스 언어 SQL / 01 SQL의 소개 (0) | 2025.09.09 |