CS-STUDY/데이터베이스

[토막지식] VIEW란?

HwangJerry 2023. 10. 15. 14:40

뷰(view)란?

  • 하나 이상의 기본 테이블 또는 다른 뷰를 이용하여 생성되는 가상 테이블이다.

뷰의 목적

  • 주로 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 사용된다.
    • 예를 들어, 회사 내에 직급 또는 권한에 따라 조회할 수 있는 데이터의 레벨이 다른 경우에, 뷰를 활용하여 이를 구현할 수 있다.
  • 뷰를 적절히 이용하면 복잡한 질의문을 단순화하여 활용할 수 있으며, 데이터의 중복성을 최소화할 수 있다.

뷰의 특징

  • 뷰는 '가상 테이블'이기 때문에, 한번 생성해두면 이를 테이블과 같이 활용 가능하다.
  • 기본 테이블들은 디스크에 공간이 할당되어 데이터가 저장되지만, 뷰는 데이터 딕셔너리 테이블에 뷰에 대한 정의를 나타내는 SQL문 만이 저장된다. 즉, 디스크 별도로 뷰를 위한 저장 공간이 할당되지 않아 디스크에 부담이 없다.
  • 뷰에 대한 수정이 발생하면, 데이터 딕셔너리 테이블에 저장된 뷰에 대한 정의를 나타내는 SQL문에 수정이 적용되는 방식이 아니라, 뷰를 정의할 때 사용된 기본 테이블에 적용된다.
  • 뷰를 정의한 기본 테이블이 가지고 있는 무결성 제약조건은 그대로 상속된다.

뷰의 장점

  • 데이터의 접근을 제어하여 보안성을 강화한다.
  • 데이터 관리를 단순화할 수 있다.

뷰의 단점

  • 뷰의 정의는 변경이 불가하다.
  • 삽입, 삭제, 갱신 연산에 제한이 있다.

 

뷰 생성 SQL문

// create view (viewname) as (select ~)
create view emp3 as select * from employee where dno = 3;

뷰를 이용한 조회 SQL문

select ename from emp3 where salary >= 3000000;

뷰 삭제 SQL문

// drop view (viewname)
drop view emp3;

 

단순뷰와 복합뷰

  • 하나의 기본 테이블 위에 정의한 뷰를 단순뷰라고 한다.
  • 복합뷰란 두 개 이상의 기본 테이블로부터 파생된 뷰를 의미한다.

 

뷰에 대한 갱신 연산

  • 데이터를 조작할 때에는 insert, select, update, delete와 같은 DML(data manipulation langauge)을 이용하는데, 이는 기본 테이블의 무결성 제약조건, 표현식, 집단 연산, group by 절의 유무에 따라서 사용이 제한된다.

 

만약 뷰가 집단 연산인 경우에, 뷰를 통한 갱신 연산은 불가능하다.
create view empavgsal as select avg(salary) as salavg from employee;

update empavgsal set salavg = salavg + 10; // point of failure

 

참고 : https://reeme.tistory.com/54