View 테이블 Mssql

Windows/MSSQL 2008. 4. 29. 10:51

http://blog.naver.com/sevenwind/130020436098

출처 블로그 > Programming & Extreme Life .. Mazester's Home
원본 http://blog.naver.com/mazester/60002587408

뷰란?

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


뷰의 제한 조건.

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

CREATE [or REPLACE] [FORCE|NOFORCE] VIEW $view_name AS $subQuery

[WITH CHECK OPTION]

[WITH READ ONLY]


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

 

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


CREATE OR REPLACE VIEW Check_Option
       
AS
           SELECT empno, ename, deptno
           FROM  emp
          WHERE deptno = 10
       
WITH CHECK OPTION

 

WITH CHECK OPTION 사용시 INSERT할 경우 WHERE 조건에 맞을 경우만

INSERT, UPDATE 가능

 

VIEW에 대한 DML문 사용 규칙

  VIEW가 다음 사항을 포함하는 경우 행의 삭제 불가
   - JOIN조건, 그룹함수, GROUP BY절, DISTINCT명령

 
 VIEW가 다음 사항을 포함하는 경우 데이터 수정 불가
   - JOIN조건, 그룹함수, GROUP BY절, DISTINCT명령, 식으로 정의된 컬럼(EX SAL * 0.1)

 
 VIEW가 다음 사항을 포함하는 경우 데이터 추가 불가
   - JOIN조건, 그룹함수, GROUP BY절, DISTINCT명령, 식으로 정의된 컬럼,
     VIEW에 선택되지 않는 NOT NULL컬럼



뷰의 정보 조회

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

SQL>SELECT view_name , text
       FROM  USER_VIEWS;


뷰의 삭제

SQL>DROP VIEW Read_Only;

[출처] View 테이블 Mssql |작성자 여유

Posted by 아로스

아로스

달력