CREATE VIEW

CREATE VIEW文は、SelectQuery句で指定された表に対するビューを作成します。ビューとは、1つ以上のディテール表に基づいた論理表のことです。ビュー自体にデータは含まれていません。ビューは、ディテール表からすでに計算されたデータを含むマテリアライズド・ビューと区別するために、非マテリアライズド・ビューと呼ばれることがあります。

アクティブ・スタンバイ・ペアのレプリケートされた環境で、DDL_REPLICATION_LEVELが3以上の場合にアクティブ・データベースでCREATE VIEWを実行すると、ビューはレプリケーション・スキームのすべてのデータベースにレプリケートされます。詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「アクティブ・スタンバイ・ペアでのDDL変更」を参照してください。

必要な権限

文を実行するユーザーには、CREATE VIEW権限(所有者の場合)または別のユーザーのビューの場合はCREATE ANY VIEW(非所有者の場合)が必要です。

ビューの所有者には、ディテール表に対するSELECT権限が必要です。

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。

SQL構文

CREATE VIEW [Owner.]ViewName AS SelectQuery

パラメータ

パラメータ 説明

[Owner.]ViewName

ビューの名前

SelectQuery

ビューで使用される、ディテール表の列を選択します。

ビューに対して索引を作成することもできます。

SELECT問合せの制限

ビューの定義に使用される問合せには、いくつかの制限があります。

  • ビュー定義のSELECT *問合せは、ビューの作成時に実行されます。ビューが作成された後に追加された列は、ビューに反映されません。

  • 次のものはビューの作成に使用するSELECT文で使用しないでください。

    • FIRST

    • ORDER BY

      使用した場合は、CREATE VIEWで無視されます。結果はソートされません。

    • 引数

  • SELECT構文のリストの各式には、一意の名前が必要です。列の別名が定義されていないかぎり、単純にその列の名前が使用されます。ROWIDは式とみなされるため、別名が必要です。

  • ビューを作成する場合にSELECT FOR UPDATEを使用しないでください。

  • 特定のTimesTen問合せ制限は、非マテリアライズド・ビューの作成時に確認されません。これらの制限に違反しているビューの作成が可能な場合がありますが、その後、実行した文でこのビューが参照されると、エラーが戻されます。

  • ビューがSELECT文のFROM句で参照されると、ビューの名前は、その定義によって解析時に導出表に置き換えられます。ビューのすべての句を元のSELECT問合せの同じ句にマージして、導出表なしでサポートされている問合せを形成できない場合、この導出表の内容が実体化されます。たとえば、ビューと参照元のSELECTで集計が指定されている場合は、その結果が選択の他の表に結合される前に、ビューがマテリアライズされます。

  • ビューを削除するには、DROP VIEW文を使用します。

  • ビューの変更にALTER TABLE文を使用することはできません。

  • ビューの参照は、ディテール表が削除または変更されているために失敗することがあります。

employees表から非マテリアライズド・ビューを作成します。

Command> CREATE VIEW v1 AS SELECT employee_id, email FROM employees;
Command> SELECT FIRST 5 * FROM v1;
< 100, SKING >
< 101, NKOCHHAR >
< 102, LDEHAAN >
< 103, AHUNOLD >
< 104, BERNST >
5 rows found.

t1の集計問合せから、列max1を持つ非マテリアライズド・ビューtviewを作成します。

CREATE VIEW tview (max1) AS SELECT MAX(x1) FROM t1;