Database/SQL

[SQL] View

gangintheremark 2021. 10. 17. 03:31
728x90

View 란?

  • 다른 테이블로 유도된 가상의 테이블
  • 기본 테이블은 데이터가 실제 데이터베이스에 저장되지만 뷰의 경우 정의만 저장
  • 뷰를 기반으로 새로운 뷰를 정의할 수 있음
create view <뷰 이름> [컬럼 이름 리스트]  
as select 문  
[with check option]; -- where 절이 만족되는지 체크 (생략가능)
  • select 문은 union 또는 order by를 포함할 수 없음
  • 컬럼명을 지정하지 않으면 select 결과의 컬럼명과 동일

View 의 확인

  • all_catalog : 테이블, 뷰, 시퀀스 확인
  • all_view : 뷰의 정의 확인

View 의 삭제

drop view <뷰 이름> [restric|cascade]
  • restric : 가 다른 곳에 사용되지 않을 때만 삭제
  • cascade : 해당 뷰를 사용하여 유도된 뷰들도 같이 삭제
-- STUDENT 테이블에서 '컴퓨터'과에 속한 학생들만으로 구성된 뷰 CSTUDENT를 정의하라

create view CSTUDENT 
as select *
    from STUDENT
    where dept = '컴퓨터';

View 의 특징

  • 뷰는 일반적으로 변경(삽입, 삭제, 갱신)이 불가능하지면 제한적으로 변경 가능한 뷰도 있음
  • 뷰에 INSERT 하려면 키가 포함되어 있어야 함
  • 뷰에 UPDATE 또는 DELETE 하려면 기반테이블에서 갱신 또는 삭제 대상이 되는 행을 식별할 수 있어야 함
    • 서로 다른 테이블들을 조인한 결과물을 뷰로 정의한 경우 갱신이 불가능할 수 있음

뷰의 장.단점

728x90