CREATE MATERIALIZED VIEW

CREATE MATERIALIZED VIEW 명령을 사용하여 기본 테이블 컬럼의 서브세트에 대한 정렬된, 프로젝트된, 구체화된 뷰를 작성하거나 대체할 수 있습니다. 이러한 뷰 유형은 각각 기본 테이블 컬럼의 서브세트를 프로젝트하며, 기본 테이블 컬럼의 특정 세트에서 정렬됩니다. 시스템은 지속적으로 뷰를 저장합니다. 이는 \dm 명령을 실행하여 표시될 수 있습니다.

구문

구체화된 뷰를 작성하는 구문은 다음과 같습니다.
CREATE [OR REPLACE] MATERIALIZED VIEW <viewname> AS SELECT <col>[,<col>…]
FROM <table> [ORDER BY <order_col>[,<order_col>…]];

입력

CREATE MATERIALIZED VIEW 명령의 입력은 다음과 같습니다.

표 1. CREATE MATERIALIZED VIEW 입력
입력 설명
OR REPLACE 기존 구체화된 뷰를 대체합니다. 이 옵션을 사용하면 데이터베이스 이름이 변경된 이후 또는 일부 방식으로 기본 테이블이 변경된 이후에 뷰를 재빌드할 수 있습니다.
<보기 이름 작성할 구체화된 뷰의 이름입니다.
<col> 이 뷰를 구성하는 컬럼입니다. 최대 64개까지 컬럼을 지정할 수 있습니다.
<table> 뷰가 작성되는 테이블입니다.
<order_col> 정렬할 컬럼입니다.

제한사항

CREATE MATERIALIZED VIEW 명령에는 다음 제한사항이 있습니다.
  • FROM절에는 단일 기본 테이블만 지정할 수 있습니다.
  • 구체화된 뷰를 작성할 때는 WHERE절을 사용할 수 없습니다.
  • 선택 목록에 지정하는 컬럼은 기본 테이블에 존재해야 합니다.
  • 선택 목록에는 최소한 하나의 컬럼을 지정해야 합니다.
  • 구체화된 뷰에 대해 최대 64개까지 컬럼을 선택할 수 있습니다.
  • ORDER BY 목록의 컬럼은 선택 목록에 지정되어 있어야 합니다.
  • 외부, 임시, 시스템 또는 클러스터된 기본 테이블(CBT)을 뷰의 기본 테이블로 지정할 수 없습니다.

출력

CREATE MATERIALIZED VIEW 명령의 출력은 다음과 같습니다.

테이블 2. CREATE MATERIALIZED VIEW 출력
출력 설명
CREATE MATERIALIZED VIEW 명령에 성공했습니다.
ERROR: Relation 'view' already exists. 지정된 이름의 뷰가 이미 데이터베이스에 존재합니다.

권한

관리 사용자, 구체화된 뷰가 정의된 데이터베이스 또는 스키마의 소유자이거나, 계정에 구체화된 뷰 작성 특권이 있어야 합니다. OR REPLACE 옵션을 지정하는 경우에는 구체화된 뷰 또는 구체화된 뷰 오브젝트 클래스에 대한 변경 특권도 있어야 합니다.

사용량

샘플 사용법은 다음과 같습니다.
  • 구체화된 뷰를 작성합니다.
    MYDB.SCH1(USER)=> CREATE MATERIALIZED VIEW kinds AS SELECT t1 FROM 
    emp ORDER BY name;