뷰(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;
-- 오류 이유 : 뷰가 집단연산의 경우, 뷰를 통한 갱신 연산은 불가능하기 때문.
'Programming > SQL' 카테고리의 다른 글
[SQL/실습] 뷰 생성 / 뷰 적용 실습해보기 (0) | 2020.12.18 |
---|---|
[SQL] 뷰(view) - 인라인 뷰 / with절 (0) | 2020.12.17 |
[SQL] 인덱스 - 생성 / 삭제 / 종류 ( 고유 / 비고유 / 단일 / 결합 / DESCENDING / 집중 / 비집중 ) (0) | 2020.12.17 |
[SQL/실습] 서브쿼리와 함수를 조합하여 문제풀기 (0) | 2020.12.17 |
[SQL] 집단연산자 - 집단함수( sum / avg / count /max / min / stdev / var ) , group by / having (0) | 2020.12.17 |