본문 바로가기

Programing/Oracle

Oracle - VIEW

VIEW - 물리적 TABLE을 근거로 한 논리적 가상테이블


<특징>

-물리적인 저장공간 X
-테이블을 기초로한 가상테이블
-하나 이상의 테이블로 생성
-테이블에  선택된 컬럼 정보만 참조 (보안강화)
-복잡한 조인문을 간단하게 실행
-튜닝된 SQL문을 사용하여 성능향상
-유지보수 편리
-ACCESS의 단순화


VIEW의 종류

SIMPLE 뷰


SQL> CREATE OR REPLACE VIEW EMP1
         AS SELECT * FROM EMP WHERE DEPTNO = 10;


COMPLEX 뷰


SQL> CREATE VIEW EMP1
         AS SELECT E.EMPNO, E.ENAME, E.DEPTNO, D.DNAME
         FROM EMP E, DEPT D
         WHERE E.DEPTNO = D.DEPTNO;

SIMPLE 뷰


-하나의 테이블로 생성, 그룹함수 사용 불가능 , DISTINCT의 사용 불가능 ,DML 실행 가능


COMPLEX 뷰


-여러개의 테이블로 생성, 그룹함수 사용 가능,DISTINCT의 사용 가능, DML 실행불가능


VIEW 생성

SQL> CREATE VIEW EMPVW30
  2  AS
  3  SELECT EMPNO, ENAME, SAL, DEPTNO
  4  FROM EMP
  5  WHERE DEPTNO=30;

SQL> DESC USER_VIEWS

SQL> SELECT VIEW_NAME,TEXT FROM USER_VIEWS;


CREATE OR REPLACE - 뷰의 내용을 변경


SQL> CREATE OR REPLACE VIEW EMPVW30
  2  AS
  3     SELECT EMPNO, ENAME, COMM, DEPTNO
  4     FROM EMP
  5     WHERE DEPTNO = 10;


VIEW 삭제


SQL> DROP VIEW EMPVW30;



TOP-N QUERY


"가장 최근에 입사한 5명의 사원"등 최소값, 최대값을 가진 컬럼 몇개의 행만 추출할때 효과적


봉급을 가장 많이 받는 사람 3명 (사번,이름,봉급)


SQL> CREATE VIEW E1
  2  AS SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC;


뷰가 생성되었습니다.


SQL> SELECT ROWNUM,EMPNO,ENAME,SAL FROM E1;

 

SQL> SELECT ROWNUM,EMPNO,ENAME,SAL FROM E1 WHERE ROWNUM <= 3;

 

SQL> SELECT ROWNUM, EMPNO, ENAME, SAL
  2  FROM (SELECT EMPNO, ENAME, SAL FROM EMP ORDER BY SAL DESC)
  3  WHERE ROWNUM <= 3;


    ROWNUM      EMPNO ENAME             SAL
---------- ---------- ---------- ----------
         1       7839 KING             5000
         2       7788 SCOTT            3000
         3       7902 FORD             3000


* ROWID, ROWNUM 은 pseudo column(거짓 컬럼) 으로 생성될때마다 번호를 추출한다

 

'Programing > Oracle' 카테고리의 다른 글

Oracle - SEQUENCE , SYNONYM  (0) 2008.07.29
Oracle - INDEX  (0) 2008.07.29
Oracle - CONSTRAINTS  (0) 2008.07.29
Oracle - DDL(DATA DEFINITION LANGUAGE)  (0) 2008.07.29
Oracle - DATA DICTIONARY (관리용 테이블)  (0) 2008.07.29