Oracle - 뷰. View Database

뷰(View)
  (1) 뷰 - 뷰는 테이블에 대한 가상테이블로서 테이블이 존재하지 않으면 뷰도 존재할 수 없다.
          뷰는 테이블처럼 데이터를 직접 소유하지 않고 검색시에만 정의된 뷰를 틀에 맞게 보여준다.
  (2) 사용 이유
    - 기본 테이블에 대한 보안기능을 설정해야 하는 경우
    - 복잡하며 자주 사용되는 질의 sql문을 보다 쉽고 간단하게 사용해야 하는 경우
  (3) 형식
      CREATE OR REPLACE VIEW 뷰이름
      AS
      [SUB-QUERY]
      [WITH CHECK OPTION]
      [WITH READ ONLY]
      /

  -- 사원번호, 이름, 급여, 부서명을 조회하는 뷰를 생성해라.
  create or replace view MyEmp
  as
  select empno, ename, sal, deptno
  from emp;

  select * from MyEmp;

  << 참고 - 뷰 생성 권한주기 >>
  sqlplus "/as sysdba"
  grant create view to scott;

  -- 뷰이름 알아보기
  select view_name from user_views;
  -- 뷰 삭제하기
  drop view MyEmp;

  -- 뷰를 통해 데이터 삽입하기(가능)
  insert into MyEmp values(1000,'han',5000,1);

  -- WITH READ ONLY 옵션 사용
  create or replace view MyEmp
  as
  select empno, ename, sal, deptno
  from emp
  WITH READ ONLY   -- 뷰를 통한 수정 삭제 추가등이 안됨
  /

  -- WITH CHECK OPTION 사용
  create or replace view MyEmp
  as
  select empno, ename, sal, deptno
  from emp
  where deptno = 10
  WITH CHECK OPTION;
  /

  insert into MyEmp values(1003,'KIM',2000,30);
  --> 뷰의 조건에 맞지 않으므로 WITH CHECK OPTION으로 인해 오류 발생

  (4) 뷰의 종류
    1) 단일뷰 - 하나의 테이블로 생성되는 뷰
    2) 복합류 - 두개 이상의 테이블로 생성되는 뷰 (insert, delete, update는 실행 불가)
  -- 사원번호, 사원이름, 부서번호, 부서명을 조회하는 뷰를 만들기.
  create or replace view emp_dept
  as
  select e.empno 사원번호, e.ename 이름, e.deptno 부서번호,
  d.dname 부서명
  from emp e, dept d
  where e.deptno = d.deptno;


트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://marcus215.egloos.com/tb/93843 [도움말]

덧글

댓글 입력 영역