Programming/SQL

[SQL] 뷰(view) - 뷰의 개념 / 필요성 / 장단점 / 구문 / 종류

reeme 2020. 12. 17. 22:56

뷰(view)

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

-- 기본 테이블은 디스크에 공간이 할당되어 데이터를 저장함

-- 뷰는 데이터 딕셔너리 (Data Dictionary) 테이블에 뷰에 대한 정의 (SQL 문) 만 저장되어 디스크 저장 공간 할당이 이루어지지 않음

-- 전체 데이터 중에서 일부만 접근할 수 있도록 함

-- 뷰에 대한 수정 결과는 뷰를 정의한 기본 테이블에 적용됨

-- 뷰를 정의한 기본 테이블에서 정의된 무결성 제약조건은 그대로 유지됨

 

 

뷰의 필요성

-- 사용자 마다 특정 객체만 조회할 수 있도록 할 필요가 있음

   (모든 직원에 대한 정보를 모든 사원이 볼 수 있도록 하면 안 됨)

-- 복잡한 질의문을 단순화 할 수 있음

-- 데이터의 중복성을 최소화할 수 있음

 

예) 판매부에 속한 사원들만을 사원테이블에서 찾아서 다른 테이블로 만들면 중복성이 발생함

-> 이럴 때 뷰가 필요함

 

뷰의 장·단점

장점

-- 논리적 독립성을 제공함

-- 데이터의 접근 제어 ( 보안 )

-- 사용자의 테이터 관리 단순화

-- 여러 사용자의 다양한 데이터 요구 지원

단점

-- 뷰의 정의 변경 불가

-- 삽입 , 삭제 , 갱신 연산에 제한이 있음

 


뷰의 생성구문 
create view 뷰이름 as sql문 (select문) ;
예) 사원 테이블에 부서번호 30인 사원들의 뷰 생성하기

create view emp30 as select * from employee where dno=30; 


뷰의 삭제구문
drop view 뷰이름 ;
예) 뷰를 이용하여 부서번호 30인 사원들 중 급여가 500이상인 사원들의 이름 구하기

select ename from emp30 where salary>=500;

뷰의 종류

단순뷰
하나의 기본 테이블 위에 정의된 뷰
복합 뷰
두개이상의 기본 테이블로부터 파생된 뷰

뷰에 대한 갱신 연산
-- 무결성 제약 조건 , 표현식, 집단 연산, group by 절의 유무에 따라서 DML(Date Manipulation Languate)문 사용이 제한적임
-- 데이터 조작언어(DML) : insert , delete , update, select 문과 같이 데이터의 삽입, 삭제 , 변경, 검색을 할 수 있게 하는 데이터 조작문
예) 사원 테이블에서 평균연봉을 구하는 뷰 생성하기

create view empavgsal as select avg(salary) as salavg from employee ; 

 

예) 평균 연봉 뷰에 대하여 평균연봉 10증가시키기 

update empavgsal set salavg = salavg+10; 


-- 오류 이유 : 뷰가 집단연산의 경우, 뷰를 통한 갱신 연산은 불가능하기 때문.