ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • VIEW
    Oracle-diary/DB객체 2020. 1. 29. 18:48
    요약
    object table/view/index/sequence/synonym
    view정의 논리적 가상 테이블
    생성 create view view명 as subquery문
    table비교 view는 하나의 창문
    view의 장점 공간 효율,보안
    특징 view가 보는 table의 변경 된다.
    view 수정 create or replace view view명 as subquery
    view 종류
     
     
     
    OBJECT란?
    OBJECT의 종류로는
    Table
    view
    sequence
    index
    sysnonym 등이 포함된다.
    ----------------------------------------------------------------------------------------------------------------------------------
    VIEW의 정의
    물리적 테이블에 근거한 논리적 가상테이블 역할
    (select문에 이름 붙여놓은 것이지만 마치 테이블처럼 역할을 하게 되는것.)
    -----------------------------------------------------------------------------------------------------------------------------------
    view 생성?
    create view view명
    as
    subquery문
    create view empvw30
    as
    select empno,ename,sal,deptno
    from emp
    where deptno=30;
     
    *view를 만들기 전에
    grant create view to scott; <-view를 만들기 위해선 일반 사용자는 관리자 계정에서 view를 만들 수 있는 권한을 부여해야한다.
    ----------------------------------------------------------------------------------------------------------------------------------
    view와 table 비교
    view와 table은 매우 유사하지만 view는 하나의 창문이다. 세상의 전체를 보여주지 않고 창문 틀에 제한된 것만 보여주는 것처럼
    VIEW를 통해 주어진 조건에 대한 내용만 보도록하는 WHERE절이 있는 SELECT문과 동일한 출력값을 갖는다.
     
    EX) ^
    SCOTT>select text
    2 from user_views
    3 where view_name='EMPVW30';
     
    TEXT
    ------------------------------------------------------ <-VIEW EMPVW30의 실체.SELECT문이다.
     
    select empno,ename,sal,deptno
    from emp
    where deptno=30
     
    >SELECT*
    FROM EMPVW30; 에서 EMPVW30=select empno,ename,sal,deptno
    from emp
    where deptno=30 과도 같다
     
    마치 SUBQUERY문처럼 실행된다.
     
    SCOTT>SELECT* SELECT*
    2 FROM(SELECT EMPNO,ENAME,SAL,DEPTNO = FROM EMPVW30;
    3 FROM EMP
    4 WHERE DEPTNO=30);
     
    ---------------------------------------------------------------------------------------------------------------------------
    SUBQUERY를 써서 그냥 출력하면 되는데 VIEW를 쓰는 이유는?
    1)공간 효율.
    그냥 조건문을 사용하면 만약 정보를 사용하고자 하는 TABLE의 용량이 크면 쓸데없이 테이블이 하나더 만들어져 그 명령어 자체에 의해
    DB의 공간을 많이 차지하게 된다.
    VIEW의 경우에는 그저 글자 몇자만 저장하기 때문에 공간을 차지하는것이 적어 더 효율적이다.
     
    2)보안.
    직접적인 정보가 들어있는 TABLE의 접근 권한을 제한시키면서 그 테이블을 사용할 수 있다.
     
    3)액세스의 단순화.
    복잡한 JOIN등을 번거롭게 하지않는다.
    ex)create view emp_dept
    as
    select e.ename,d.dname
    from emp e, dept d
    where e.deptno=d.deptno;
     
     
     
    select*from emp_dept;
    ---------------------------
     
    --------------------------------------------------------------------------------------------------------------------------
    view의 특징
    VIEW를 통해 기존의 테이블을 변경해도 변경이 된다.
    SCOTT>update empvw30
    2 set sal=1250
    3 where ename = 'MARTIN';
     
    VIEW 자체는 저장공간이 없다. VIEW를 통해 보는테이블의 내용을 바꾸게 된다.
     
     
     
    -----------------------------------------------------------------------------------------------------
    view 수정
    create or replace view view명
    as
    subquery
     
     
    create or replace view empvw30 <-empvw30이라는 이름의뷰가 없으면 생성 있으면 아래의 select문으로 내용을 변환하라.
    as create or replace를 항상 같이 써야한다.
    select empno,ename,comm,deptno
    from emp
    where deptno=30;
     
    -----------------------------------------------------------------------------------------------------
    view의 종류
    simple view
    complex view 둘로 나눌수가 있다 .
     
    simple view
    as 밑에 있는 select문을
    단순화 한것
     
     
    complex view
    as 밑에 있는 select문을
    복잡하게 한것
    join,group by,having등이 오는
    것들을 말한다.
     
    *complex view의 경우엔 dml이 안되는 경우가 있다.
    ex)SCOTT>insert into avg_deptno
    2 values(50,5000);
    insert into avg_deptno <- dml이 안된다.

    'Oracle-diary > DB객체' 카테고리의 다른 글

    SYNONYM  (0) 2020.01.29
    SEQUENCE  (0) 2020.01.29
    INDEX  (0) 2020.01.29

    댓글

Designed by Tistory.