mun dev

[Oracle] 뷰(View), 복합 뷰(Complex View) 생성, 사용 본문

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 포함
데이터 수정 여부 수정 가능 수정 불가능 할 수 있음