라일락 꽃이 피는 날

[Oracle] View (뷰) 본문

프로그래밍/Oracle

[Oracle] View (뷰)

eunki 2022. 6. 9. 17:41
728x90

View (뷰)

테이블과 비슷하지만 데이터를 저장하고 있지는 않고 select 문으로 데이터를 검색하는 결과를 출력하는 db_object

 

 

 

를 사용했을 때의 장점

1. 보안상의 이유로 민감한 데이터를 노출시키고 싶지 않을 때

2. 복잡한 쿼리문을 간단하게 쿼리하고 싶을 때

 

 

 

뷰의 종류

  단순 view 복합 view
테이블의 개수 1개 2개 이상
함수 포함 여부 포함 안 함 포함
데이터 갱신 여부 갱신됨 수정 안 될 수도 있음

 

 

 

 

예제 1. 사원 테이블에서 사원 번호, 이름, 월급을 출력하는 view 생성

create or replace view emp57
as
select empno, ename, sal
    from emp;

테이블은 data 를 저장하지만 view 는 데이터를 저장하지 않는다.

view 는 원본 테이블의 일부 데이터를 바라보는 것이다.

 

 

 

예제 2. emp57에서 SCOTT의 월급을 0 으로 수정

update emp57
    set sal = 0
    where ename = 'SCOTT';

emp57 뷰를 update 했다는 것은 emp57이 바라보는 emp 테이블을 update 했다는 것이다.

view 는 주로 쿼리용으로 쓰이고 insert, update, delete 작업을 수행하는데 잘 사용되지 않는다.

 

 

 

예제 3. 이름과 부서 위치를 출력하는 view 생성

create or replace view emp_dept
as
select e.ename, d.loc
    from emp e, dept d
    where e.deptno = d.deptno;

 

 

 

예제 4. 직업과 직업별 토탈 월급을 출력하는 view 생성

create or replace view dept_sumsal
as
    select job, sum(sal) 토탈
        from emp
        group by job;

view를 생성할 때 함수나 그룹 함수가 포함되어 있으면 반드시 컬럼 별칭을 사용해야 한다.

 

 

 

 

뷰 삭제하는 방법

 

1. 내가 가지고 있는 view 리스트 확인

select * from user_views;

2. view 삭제하기

drop view emp57;
728x90

'프로그래밍 > Oracle' 카테고리의 다른 글

[Oracle] SQL 튜닝  (0) 2022.06.09
[Oracle] Index (인덱스)  (0) 2022.06.09
[Oracle] 임시 테이블 생성  (0) 2022.06.09
[Oracle] 일반 테이블 생성  (0) 2022.06.08
[Oracle] 계층형 질의문  (0) 2022.06.07