カテゴリ:

テーブル、ビュー、シーケンス DDL

CREATE MATERIALIZED VIEW

既存のテーブルのクエリに基づいて、現在の/指定されたスキーマに新しいマテリアライズドビューを作成し、ビューにデータを入力します。

詳細については、 マテリアライズドビューの使用 をご参照ください。

こちらもご参照ください:

ALTER MATERIALIZED VIEWDROP MATERIALIZED VIEWSHOW MATERIALIZED VIEWS

構文

CREATE [ OR REPLACE ] [ SECURE ] MATERIALIZED VIEW [ IF NOT EXISTS ] <name>
  [ COPY GRANTS ]
  ( <column_list> )
  [ COMMENT = '<string_literal>' ]
  [ CLUSTER BY ( <expr1> [, <expr2> ... ] ) ]
  AS <select_statement>

必須パラメーター

名前

ビューの識別子を指定します。ビューが作成されるスキーマに対して一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

ステートメントの選択

ビューの作成に使用されるクエリを指定します。このクエリは、ビューのテキスト/定義として機能します。このクエリは、 SHOW VIEWSSHOW MATERIALIZED VIEWS、および VIEWS 情報スキーマビューの出力に表示されます。

ステートメントの選択 には制限があります。詳細については、 以下をご参照ください。

オプションのパラメーター

列リスト

ビュー内の列名を基になるテーブルの列名と同じにしたくない場合は、列名を指定する列リストを含めることができます。(列のデータ型を指定する必要はありません。)

マテリアライズドビューに CLUSTER BY 句を含める場合は、列名リストを含める必要があります。

文字列リテラル

ビューのコメントを指定します。文字列リテラルは一重引用符で囲む必要があります。(エスケープされない限り、文字列リテラルには単一引用符を含めないでください。)

デフォルト:値なし。

式#

マテリアライズドビューをクラスター化する式を指定します。通常、各式はマテリアライズドビューの列の名前です。

マテリアライズドビューのクラスタリングの詳細については、 マテリアライズドビューとクラスタリング をご参照ください。一般的なクラスタリングの詳細については、 データクラスタリングとは をご参照ください。

SECURE

ビューが安全であることを指定します。セキュアビューの詳細については、 安全なビューの使用 をご参照ください。

デフォルト:値なし(ビューは安全ではない)

COPY GRANTS

OR REPLACE 句を使用して既存のビューを置換する場合、置換ビューは元のビューからのアクセス許可を保持します。このパラメーターは、 OWNERSHIP を 除く すべての権限を既存のビューから新しいビューにコピーします。新しいビューは、スキーマ内のオブジェクトタイプに定義された将来の許可を継承 しません。デフォルトでは、CREATE MATERIALIZED VIEW ステートメントを実行するロールが新しいビューを所有します。

パラメーターが CREATE VIEW ステートメントに含まれていない場合、新しいビューは元のビューに付与された明示的なアクセス権を継承 しませんが、スキーマ内のオブジェクトタイプに定義された将来の権限を継承します。

許可をコピーする操作は、 CREATE VIEW ステートメントで(つまり、同じトランザクション内で)アトミックに発生することに注意してください。

デフォルト:値なし(付与はコピーされない)

使用上の注意

  • 基になるソーステーブルのスキーマが変更されてビュー定義が無効になる場合、ビュー定義は更新されません。例:

    • ソーステーブルの特定の列を参照するビューが作成され、その後その列はテーブルからドロップされます。

    • ビューはテーブルの SELECT * を使用して作成され、その後、列はテーブルからドロップされます。

    これらのシナリオのいずれかで、ビューをクエリするとエラーが返されます。

  • マテリアライズドビューのソーステーブルがドロップされる場合に、ビューをクエリすると次のエラーが返されます。 Materialized View <ビュー名> is invalid

  • スキーマには、同じ名前のテーブルとビューを含めることはできません。CREATE [MATERIALIZED] VIEWは、同じ名前のテーブルが既にスキーマに存在する場合、エラーを生成します。

  • ステートメントの選択 に HAVING句を含めることはできません。

  • ステートメントの選択 に ORDER BY 句を含めることはできません。

  • マテリアライズドビューには、他にも多くの制限があります。詳細については、 マテリアライズドビューの作成に関する制限 をご参照ください。

  • マテリアライズドビューに CLUSTER BY 句を含める場合は、 列リスト 句を含める必要があります。

  • マテリアライズドビューを作成するには、スキーマに対する CREATE MATERIALIZED VIEW 権限と、ベーステーブルに対する SELECT 権限が必要です。権限およびマテリアライズドビューの詳細については、 マテリアライズドビューのスキーマに対する権限 をご参照ください。

現在のスキーマに、テーブルからすべての行を選択するコメント付きのマテリアライズドビューを作成します。

CREATE MATERIALIZED VIEW mymv
    COMMENT='Test view'
    AS
    SELECT col1, col2 FROM mytable;

その他の例については、 マテリアライズドビューの使用 の例をご参照ください。