반응형
. view 는 table 과 유사하고 table 처럼 사용하지만 table과 달리 data를 저장하기 위한 물리적 공간을 필요로 하지 않는다.
. data 를 물리적이 아닌 논리적 집합을 갖는다.
. table 과 마찬가지로 select , insert, update, delete 가 가능
. view 를 생상하면 select 문장이 dictionnary에 저장된다.
. view 를 조회하면 dictionary에 저장되어 있는 해당 view의 sql 문장을 이용하여 근간이 되는 table을 access한다.
VIEW 생성
CREATE VIEW v_emp ( empno, ename , job, mar, hinate, deptno ) AS SELECT empno, ename , job, mar, hinate, deptno FROM emp WHERE job = 'MANAGR' ;
VIEW 삭제
DROP VIEW v_ep ; (VIEW를 없앤다고 해도 물리적이지 않으므로 data가 삭제 되지 않는다.)
VIEW 변경
CREATE OR REPLACE VIEW ~~
VIEW를 사용하는 이유
- 보안 관리을 위한 VIEW
. 보안 등급에 맞추어 컬럼 및 범위를 정하고 privilege 부여
. 연산 결과만 제공하고 Algorithm 을 숨기기 위해 사용
. SELECT List 를 Function으로 가공하여 UPDATE, INSERT를 원천적으로 봉쇄
. Table 의 명칭이나 Column의 명칭을 숨기기 위한 View
- 사용 편의를 위한 View
. 검색조건의 단순화
. End User를 위한 Table 명, Column의 한글화
. join 문장의 단순화를 위한 View
- 수행속도 향상을 위한 View
. 미리 Tuning 된 SQL문으로 생성한 View
. 특정한 절차로 수행시키기 위해 View 의 SELECT List에 HINT등을 사용한 View
- 융통성 향상을 위한 View
. 업무 규칙의 변경이 빈번하여 응용프로그램의 수정이 자주 발생 경우의 해결
- 보안관리를 위한 View
CREATE VIEW v_emp(empno, ename) AS SELECT NVL(empno,NULL), ename FROM emp;
- > NVL(empno,NULL) 같이 view에 함수를 이용한 가공된 Column은 INSERT, UPDATA 불가
CREATE VIEW v_emp2(empno,ename,annual_sal) AS SELECT empno, ename, (sal + NVL(comm,0))*12 annual_sal FROM emp;
- > 연산을 숨길수 있다.
읽기전용으로 만들기
CREATE VIEW v_emp_read_only(empno, ename) AS SELECT empno, ename FROM emp WITH READ ONLY;
수행속도 향상을 위한 VIEW
SELECT /*+ INDEX_DESC(dept pk_dept) */ deptno FROM detp WHERE deptno=>0 AND rownum=1;
/*+ INDEX_DESC(dept pk_dept) */ ====>힌트를 주는 것임
(dept테이블의 pk_dept라는 인덱스를 desc거꾸로 정렬해라 하는 뜻)
where절에 deptno>0이라는 당연한 조건을 준이유는 옵티마이저가 검색조건을 비교할때
인덱스(deptno에 생성되어있는 인덱스)를 사용하기 때문이다.
rownum=1은 한건만. 그럼 결국 가장 큰값이 구해지는 것이다.
VIEW 관련 Dictionary
- > user_views
반응형
'학습자료(~2017) > 오라클' 카테고리의 다른 글
13. 오라클 - TRIGGER (7) | 2011.03.17 |
---|---|
12. 오라클 - SEQUENCE & SYNNYM (0) | 2011.03.16 |
10. 오라클 - 제약조건 (0) | 2011.03.15 |
9. 오라클 - 테이블 관리 및 활용 (0) | 2011.03.15 |
8. 오라클 - 테이블 스페이스 관리 (0) | 2011.03.14 |