DB/Oracle
[Oracle] 뷰(View), 복합 뷰(Complex View) 생성, 사용
mndev
2024. 2. 6. 14:53
뷰(View)
- 사원들의 사원번호, 이름, 월급, 직업, 부서번호를 출력
- 공개하면 안되는 컬럼이 있다면 나머지 컬럼들로만 view를 생성
create view emp_view
as
select empno, ename, sal, job, deptno
from emp
where job = 'SALESMAN';
복합 뷰(Complex View)
- 뷰 생성시 함수나 그룹함수를 작성할 대는 반드시 컬럼 별칭 사용
- 함수나 그룹함수가 포함되어 있다면 복합뷰
create view emp_view2
as
select deptno, round(avg(sal)) 평균월급
from emp
group by deptno;
- 30번 부서번호의 평균 월급을 1567에서 3000으로 변경
- 변경이 되지 않음, 변경이 된다고 해도 실제 테이블의 데이터가 변경되는 것은 아님
- 그룹 함수를 쿼리하는 복합뷰는 수정이 되지 않음
update emp_view2 set 평균월급 = 3000 where deptno = 30;
update emp_view2
- 데이터는 수정이 되지 않지만 복합 뷰의 큰 장점이 있음, 바로 복잡한 쿼리를
단순화
시킬 수 있음
select e.name, e.sal, e.deptno, v.평균월급
from emp e, (select deptno, round(avg(sal)) 평균월급
from emp
group by deptno ) v
where e.deptno = v.deptno and e.sal > v.평균월급;
-- 복합뷰 사용
select e.name, e.sal, e.deptno, v.평균월급
from emp e, emp_view2 v
where e.deptno = v.deptno and e.sal > v.평균월급
뷰(View)의 종류
단순 view | 복합 view | |
테이블 개수 | 1개 | 2개 이상 |
함수 포함 여부 | 포함X | 포함 |
데이터 수정 여부 | 수정 가능 | 수정 불가능 할 수 있음 |