説明
このステートメントは、ビューを作成するために使用されます。
制限事項と注意点
ビューはデータベース内で実際にはテーブルの形式では存在せず、
CREATE VIEWステートメントで指定されたSELECTステートメントの結果として派生します。ビューは使用するたびに再生成されます。FROM句で2つ以上のテーブルまたはビューが参照されている場合、そのビューは結合ビュー(Join View)と呼ばれます。更新可能な結合ビュー、または変更可能な結合ビューとも呼ばれ、2つ以上の基底テーブルまたはビューに関連し、DML操作を許可します。更新可能なビューはWITH READ ONLY句によって制限されません。ビューの更新可能性を確保するためには、一連の特定の条件を満たす必要があります。一般的なルールの一つとして、結合ビューに対して
INSERT、UPDATE、またはDELETE操作を行う場合、操作は単一の基底テーブルに対してのみ変更を加えることができます。
権限要件
CREATE VIEW ステートメントを実行するには、現在のユーザーが CREATE VIEW 権限を持っている必要があります。OceanBaseデータベースの権限の詳細については、MySQLモードの権限分類を参照してください。
構文
CREATE [OR REPLACE] VIEW view_name[(column_name_list)]
AS select_stmt
[check_option];
column_name_list:
column_name [, column_name ...]
check_option:
WITH CHECK OPTION
| WITH CASCADED CHECK OPTION
| WITH LOCAL CHECK OPTION
パラメータの説明
| パラメータ | 説明 |
|---|---|
| OR REPLACE | オプション。作成しようとするビューの名前が既に存在する場合、新しい定義でビューを再作成し、既存のビューを置き換えることを示します。 |
| view_name | ビュー名を指定します。 |
| column_name_list | オプション。ビューの列名リストを指定します。列名リストを指定しない場合、SELECT ステートメントで取得された列名がビューの列名として使用されます。SELECT ステートメントで取得される列は、テーブル列への単純な参照である場合もあれば、関数、定数値、演算子などを使用した式である場合もあります。ビューの列名には以下の制限があります:
|
| select_stmt | ビューを定義するクエリ(SELECT)ステートメントです。これにより、ベーステーブルや他のビューから選択できるビューの定義が提供されます。クエリステートメントの具体的な構造とオプションの詳細については、SELECTステートメントを参照してください。 |
| check_option | オプション。ビューのチェック範囲を指定し、ビューへの挿入および更新操作を制限します。チェック範囲の詳細については、以下のcheck_optionを参照してください。 |
check_option
WITH CHECK OPTION:ビューを作成するための構文であり、挿入または更新されるデータがビューの定義条件を満たしていることを保証するために使用されます。MySQLモードでは、WITH CHECK OPTION 句はさらに LOCAL/CASCADED キーワードと組み合わせて使用することで、データチェックの範囲をさらに指定することができます。
WITH CASCADED CHECK OPTION:このビューをチェックし、参照されるすべてのビューに対して再帰的にチェックを行います。WITH LOCAL CHECK OPTION:このビューをチェックし、参照されるビューに対してチェックを行うかどうかは、参照されるビューの定義によって決まります。
例
テーブル
test_tbl1を作成します。CREATE TABLE test_tbl1 (col1 INT, col2 INT);テーブル
test_tbl1に基づいて、ビューv1を作成します。CREATE VIEW v1 AS SELECT * FROM test_tbl1 WHERE col2 < 2 WITH CHECK OPTION;LOCAL CHECK OPTION構文を使用して、ビューv1に基づいてビューv2を作成します。CREATE VIEW v2 AS SELECT * FROM v1 WHERE col2 > 0 WITH LOCAL CHECK OPTION;CASCADED CHECK OPTION構文を使用して、ビューv1に基づいてビューv3を作成します。CREATE VIEW v3 AS SELECT * FROM v1 WHERE col2 > 0 WITH CASCADED CHECK OPTION;