다른 테이블을 기반으로 만들어진 가상 테이블 (virtual relation)
일반 테이블은 물리적으로 존재하고, 실제 데이터를 저장하지만
뷰는 논리적으로만 존재하고, 일반 테이블과 동일한 방법으로 사용한다
기본 테이블이나 다른 뷰로 새로운 뷰를 생성한다
CREATE VIEW
명령어
ORDER BY를 사용할 수 없다는 점을 제외하면 일반 SELECT문과 동일
CHECK OPTION
: 수정한 뷰에 연산 시 WHERE 조건을 위반하면 수행하지 않도록 하는 제약조건
뷰에 삽입, 수정, 연산은 기본 테이블의 내용을 바꾸기 때문에 주의해서 사용
CREATE VIEW 뷰_이름[(속성_리스트)] AS
SELECT 문
[WITH CHECK OPTION];
instructor 테이블의 salary는 숨기고 name과 department만 보여줌
create view faculty as
select ID, name, dept_name
from instructor
'Biology' 학부에서 모든 강사의 이름을 가져오기
select name
from faculty
where dept_name= 'Biology'
왓슨 건물에서 강의한 수업 중 couse_id와 교실번호를 추출
create view physics_fall_2017_watson as
select course_id, room_number
from physics_fall_2017
where building= 'Watson';
view를 찾아내면 view를 정의한 쿼리문을 대치한다
create view physics fall_2017 as
select course.course_id, sec_id, building, room_number
from course, section
where course.course_id= section.course_id
and course.dept_name= 'Physics'
and section.semester= 'Fall'
and section.year= '2017';
create view physics_fall_2017_watson as
select course_id, room_number
from (select course.course_id, building, room_number
from course, section
where course.course_id= section.course_id
and course.dept_name= 'Physics'
and section.semester= 'Fall'
and section.year= '2017')
where building= 'Watson';
DROP VIEW
명령어 이용DROP VIEW 뷰_이름;
뷰를 삽입, 수정, 삭제 연산을 하면 기본 테이블의 내용이 바뀐다.
검색은 모든 뷰에서 가능
삽입, 수정, 삭제 연산이 불가능한 뷰도 있다
쿼리문 쉽게 작성 가능
WHERE 절을 줄여 복잡한 SQL문 작성하지 않아도 됨
데이터의 보안 유지
사용자의 요구에 맞게 다양한 뷰를 미리 정의해서, 뷰에 접근 권한 설정
데이터를 편리하게 관리
사용자는 제공된 뷰에만 신경 쓰면 됨
뷰를 많이 사용할수록 성능 저하 -> view를 실체화해서 저장하는 기능 도입 = materialized view