뷰(view) 

테이블과는 달리 데이터 저장 공간이 없다.

쿼리문을 저장하고 있는 객체라고 말할 수 있다.

 

뷰의 사용 목적

직접적인 테이블 접근을 제한하기 위해서 사용(보안)

복잡한 질의를 쉽게 만들기 위해 사용(편리성)

 

뷰의 특징 

테이블에 대한 제한을 가지고 테이블의 일부만 보이게 해주는 가상 테이블이다.

실제 자료를 갖고 있지는 않지만, 테이블을 관리할 수 있다. 

하나의 테이블에 뷰의 갯수는 제한이 없다. 

 


뷰 생성 형식

create [or replace] view 뷰이름 
as 서브쿼리
[with check option]
[with read only];

 

뷰 생성

뷰를 생성하기 위해서 관리자로부터 뷰생성 권한을 부여받아야 한다. 

create view 권한- 뷰를 생성,수정,삭제 시킬 수 있는 권한

conn sys/sys암호 as sysdba
grant create view to scott; 

select ~ 구문을 실행하고 싶다면 v_emp를 실행하면 된다. 

//scott계정
//뷰 생성
SQL> create view v_emp as select empno,ename,job from b_emp
  2  where deptno=20; 

//뷰 조회
select * from v_emp; 
     EMPNO  ENAME      JOB
----------  ---------- ---------
      7369  SMITH      CLERK
      7566  JONES      MANAGER
      7788  SCOTT      ANALYST
      7876  ADAMS      CLERK
      7902  FORD       ANALYST

자주 사용되는 SQL문장

1) save 저장하여 불러오기

2) 뷰 생성하여 실행하기

-> 1)의 경우 경로를 써야한다는 불편함이 있어 2) 방법을 더 많이 사용하지만

 파라미터 인수질의 구문은 1)의 경우로 저장하는 것이 좋다

 

뷰 수정

뷰를 생성할때 수정을 고려하여 생성하려면 [or replace]옵션을 사용해야 한다.

 

- 테이블을 수정하면서 뷰 생성

//empno 대신 employee_no 필드명을 사용하는 뷰 생성
SQL> create or replace view v_emp_10(employee_no,employee_name,e_hiredate)
 2   as select empno,ename,hiredate from b_emp where deptno=10; 
 
SQL> select * from v_emp_10; 

EMPLOYEE_NO EMPLOYEE_N E_HIREDA
----------- ---------- --------
       7782 CLARK      81/06/09
       7839 KING       81/11/17
       7934 MILLER     82/01/23

 

- 뷰의 내용 수정

SQL> create or replace view v_emp_10(id,job,hire)
as select empno,job,hiredate from b_emp 
where deptno=20 or ename like '%D%';

 

뷰에 데이터 추가, 갱신 

뷰를 대상으로 실행한 DML명령문의 처리 결과는 뷰를 정의할때 사용한 기본 테이블에 적용된다.

즉, insert 혹은 update를 통해 데이터가 변경되었다면 테이블의 데이터 또한 변경된다. 

INSERT INTO 뷰이름 VALUES(값1,값2,...);

UPDATE 뷰이름 SET 변경할필드명1=값1,... WHERE 조건식;

 

뷰 삭제 

뷰는 가상테이블이기 때문에 뷰를 삭제한다는 것은user_views 데이터 딕셔너리에 저장되어 있는 뷰의 정의를 삭제하는 것을 의미한다.

drop view v_emp;

 

 

--이어서  뷰에 관한 포스팅 작성할 예정입니다. 

 

+ Recent posts