Skip to content

View #
Find similar titles

Structured data

Category
Database

View #

뷰(view)는 관계 데이터베이스의 데이터베이스 언어 SQL에서 하나 이상의 테이블 (또는 다른 뷰)에서 원하는 모든 데이터를 선택하여, 그들을 사용자 정의하여 나타낸 것이다. 또한 관계 데이터베이스의 관계 모델의 관계의 일종인 도출 관계에 해당한다. 여러 테이블(기본 관계) 또는 뷰의 데이터를 연결하여 조합할 수 있다. 대략적인 특징은 아래와 같다.

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

View의 제약조건 #

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

예제 #

View의 문법은 DBMS마다 조금씩 다르지만 대부분 비슷한 경우가 많다. 해당 문서에서는 가장많이 사용하는 DBMS중의 하나인 ORACLE에 대한 View의 사용법을 알아보도록 한다.

  • View 생성

    CREATE OR REPLACE VIEW name_view
    AS
    SELECT a.ename, b.name
    FROM emp a, dept b
    WHERE a.deptno = d.deptno
    AND b.deptno = 20;
    
  • View 조회

    SELECT * FROM name_query;
    
  • View 데이터 삽입

    INSERT INTO name_view(val1, val2, val3...)
    VALUES (val1, val2, val3...)
    
  • WITH CHECK OPTION(View의 조건을 만족하는 데이터만 insert 또는 update 가능하도록 한다)

    [부서번호 10의 데이터를 조회하는 View]
    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를 생성한다)

    CREATE OR REPLACE VIEW read_only
    AS
    SELECT empno, ename, deptno
    FROM  emp
    WHERE deptno = 10
    WITH READ ONLY;
    

    Incoming Links #

    Related Data Sciences #

    Suggested Pages #

0.0.1_20210630_7_v33