[MySQL] View 테이블 > db

본문 바로가기

db

[MySQL] View 테이블

페이지 정보

작성자 서방님 댓글 0건 조회 21회 작성일 11-06-30 14:05

본문

VIEW 테이블

뷰란?

  • - 뷰는 하나의 가상 테이블이라 생각 하면 된다.
  • - 뷰는 실제 데이터가 저장 되는 것은 아니지만 뷰를 통해 데이터를 관리 할수 있다.
  • - 뷰는 복잡한 Query를 통해 얻을 수 있는 결과를 간단한 Query로 얻을 수 있게 한다.
  • - 한 개의 뷰로 여러 테이블에 대한 데이터를 검색 할 수 있다.
  • - 특정 평가 기준에 따른 사용자 별로 다른 데이터를 액세스할 수 있도록 한다.

뷰의 제한 조건.

  • - 테이블에 NOT NULL로 만든 컬럼들이 뷰에 다 포함이 되 있어야 한다.
  • - ROWID, ROWNUM, NEXTVAL, CURRVAL등과 같은 가상컬럼에 대한 참조를 포함하고 있는 뷰에는 어떤 데이터도 INSERT 할 수 없다
  • - WITH READ ONLY 옵션을 설정한 뷰도 데이터를 갱신 할 수 없다.
  • - WITH CHECK OPTION을 설정한 뷰는 뷰의 조건에 해당되는 데이터만 삽입, 삭제,수정을 할 수 있다

뷰 문법

VIEW 테이블 : View.jpg

  • - FORCE : 기본 테이블 유무에 관계없이 VIEW를 생성
  • - WITH CHECK OPTION : VIEW에 의해 엑세스될 수 있는 행만이 입력되거나 변경될 수 있음을 지정
  • - WITH READ ONLY : SELECT만 가능한 VIEW 생성
  • - 함수를 사용한 컬럼은 반드시 ALIAS를 지정해야 한다.


뷰 예제

 
-- 뷰 생성    
SQL> CREATE OR REPLACE VIEW name_query
     AS
       SELECT a.ename, b.dname
       FROM  emp a, dept b
       WHERE a.deptno = b.deptno
         AND b.deptno = 20;

-- 뷰를 이용한 조회
SQL> SELECT * FROM name_query; 

ENAME                DNAME
-------------------- ----------
SMITH                RESEARCH
JONES                RESEARCH
...
	

WITH CHECK OPTION

뷰의 조건식을 만족하는 데이터만 INSERT 또는 UPDATE가 가능 하도록 하는 옵션 이다.

 
-- 부서 번호 10의 데이터를 조회 하는 뷰
SQL> CREATE OR REPLACE VIEW check_option
     AS
       SELECT empno, ename, deptno
       FROM  emp
       WHERE deptno = 10
       WITH CHECK OPTION ;
 
-- 부서 번호가 10인 사원만 INSERT, UPDATE할 수 있다. 
SQL> INSERT INTO check_option(empno, ename, deptno) 
     VALUES (10005, 'jain', 30);

INSERT INTO check_option(empno, ename, deptno)
            *
1행에 오류:
ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다
    

WITH READ ONLY

SELECT만 가능한 VIEW를 생성 한다

 
-- 아래 뷰는 읽기만 가능하다.
SQL> CREATE OR REPLACE VIEW read_only
     AS
       SELECT empno, ename, deptno
       FROM  emp
       WHERE deptno = 10
       WITH READ ONLY;
    

뷰의 정보 조회

USER_VIEWS 데이터 사전을 통해서 뷰에 대한 정보를 조회 할 수 있다.

 
SQL> SELECT view_name, text
     FROM USER_VIEWS;    
    

댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
299
어제
446
최대
592
전체
38,817

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]