개발자 입니다 2022. 10. 11. 20:01

평가영역

  • 개요
  • 뷰 정의
  • 뷰에 관한 DML연산

 

개요

실제로 데이터베이스에 존재하지는 않으나 있는것 처럼 사용자에게 보여주는 테이블이다. 논리적으로만 존재하며 정의만을 저장해두었다가 사용 요청이 들어올 시 실행시간에 테이블을 생성해서 보여준다.

  • 뷰가 참조하는 기본 테이블이 변경(삭제)되면 뷰도 변경(삭제)된다.
  • 외부 스키마는 뷰와 기본테이블의 정의로 구성된다
  • 검색은 가능하지만 삽입, 삭제, 갱신은 제약을 받는다.
  • 정의된 뷰는 변경할 수없으며, 변경하려면 삭제 후 다시 생성해야한다.
  • ALTER를 이용할 수 없으며, DROP을 이용해 제거한다.
  • 독자적인 인덱스를 가질 수 없다.

 


 

뷰 정의

 

뷰의 생성

create view 뷰명(컬럼명1, 컬럼명2) as
	select 컬럼명1, 컬럼명2
    from dual
    where 1=1
    with check option;
  • as 이후의 서브쿼리에서는 union이나 order by를 사용할 수없다.(join은 가능)
  • with check option을 사용하면 뷰에 대한 갱신이나 삽입 연산이 실행될 때 뷰 정의조건을 위배하면 실행을 거절한다.

 

뷰의 삭제

drop view 뷰명

--index의 경우
drop index 인덱스명

 


 

뷰에 관한 DML연산

뷰 속성이 기본 릴레이션의 기본키나 후보키를 포함한다면 뷰의 갱신이 가능하다.

일반적으로 조인을 사용하여 정의한 뷰는 갱신할 수 없다.

그룹화와 집단 함수를 사용하여 정의한 뷰 들은 갱신할 수 없다.