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.]ViewNameASSelectQuery
パラメータ
| パラメータ | 説明 |
|---|---|
|
|
ビューの名前 |
|
|
ビューで使用される、ディテール表の列を選択します。 ビューに対して索引を作成することもできます。 |
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;