このセクションでは、ビューの作成、変更、削除の方法について説明します。
ビューはテーブルのクエリ結果を表示するために使用されます。テーブルを使用できる場所のほとんどでビューも使用できます。頻繁にアクセスするデータが複数のテーブルに分散している場合、ビューを使用するのが最適な方法です。
通常ビューの作成
CREATE VIEW ステートメントを使用して通常ビューを作成できます。作成後は、このビューに対してDMLステートメントを実行できます。
Oracleモードでは、ビュー作成のSQL構文は次のとおりです:
CREATE [OR REPLACE] [[NO] FORCE] VIEW view_name [(column_name_list)]
AS select_stmt
[view_check_option];
column_name_list:
column_name [, column_name ...]
view_check_option:
WITH READ ONLY
| WITH CHECK OPTION
ここで:
OR REPLACE:作成しようとするビュー名が既に存在する場合、新しい定義でビューを再作成します。[NO] FORCE:ビュー作成時に、そのビューに基づくテーブルや参照されるオブジェクトタイプの存在、およびビューが属するスキーマの所有者の権限を考慮したくない場合は、FORCEを指定する必要があります。基礎テーブルの存在とビューが属するスキーマの所有者の権限を確認済みの場合は、
NO FORCEを指定できます。デフォルトはNO FORCEです。column_name_list:基礎テーブルと同様に、ビューも一意の列名を持たなければならず、重複はできません。デフォルトでは、SELECTステートメントで取得した列名がビューの列名として使用されます。ビューの列に明示的な名前を定義したい場合は、オプションの
column_name_list句を使用できます。IDはカンマで区切ります。column_name_listの名前の数は、SELECTステートメントで取得する列数と同じでなければなりません。SELECTステートメントで取得する列は、テーブル列への単純な参照でもかまいません。関数、定数値、演算子などを使用した式でもかまいません。select_stmt:ビューを定義するSELECTステートメントで、このステートメントの情報は基礎テーブルや他のビューから取得します。説明
- OceanBaseデータベースのOracleモードでは、ビュー作成時に
--stringを使用してビューにコメントを追加できます。この場合、コメントはビュー定義に保存されます。--stringはselect_stmtの任意の場所にコメントできます。
WITH READ ONLY:ビューの作成または置換時のオプションで、ビューを読み取り専用として使用し、DML操作(INSERT、UPDATE、DELETE)には使用できないように指定します。つまり、ビューを介した挿入、更新、削除操作を禁止します。WITH CHECK OPTION:ビュー作成時に使用する構文で、挿入または更新されるデータがビューの定義条件を満たすことを保証します。つまり、ビューを介したDML操作を許可しますが、操作後のデータはビューの定義条件を満たしている必要があります。説明
Oracleモードの
WITH CHECK OPTION構文は、LOCALまたはCASCADEDとして指定することはサポートされていません。デフォルトはCASCADEDです。OceanBaseデータベースは、ビューのフィルタ条件(
where_clause)にサブクエリを含む場合にWITH CHECK OPTION句を指定することもサポートしています。注意
フィルタ条件で
WITH CHECK OPTION句を使用する場合、ビュー定義でJOIN操作の使用は現在サポートされていません。
例:
テーブル
tbl1のcol1、col2列を選択してビューview1を作成します。obclient> CREATE OR REPLACE FORCE VIEW view1(vcol1, vcol2) AS SELECT col1, col2 FROM tbl1;テーブル
tbl2のcol1、col2列に基づいてビューview4を作成し、同時にビューview4にコメントを追加します。テーブル
tbl2を作成します。obclient [SYS]> CREATE TABLE tbl2 (col1 INT, col2 INT);ビュー
view4を作成します。obclient [SYS]> CREATE VIEW view4 AS SELECT col1, --col1 comment1 col2 --col1 comment2 FROM tbl2;
通常ビューの変更
CREATE OR REPLACE VIEWステートメントを使用して、通常ビューを変更できます。例:ビュー
stock_itemを変更します。obclient> CREATE OR REPLACE VIEW stock_item AS SELECT /*+ leading(s) use_merge(i) */ i_price, i_name, i_data, s_i_id, s_w_id, s_order_cnt, s_ytd, s_remote_cnt, s_quantity, s_data, s_dist_01, s_dist_02, s_dist_03, s_dist_04, s_dist_05, s_dist_06, s_dist_07, s_dist_08, s_dist_09, s_dist_10 FROM stok s, item i WHERE s.s_i_id = i.i_id; Query OK, 0 rows affected (0.02 sec)ビューの削除
DROP VIEWステートメントを使用して、1つまたは複数のビューを削除できます。ビューを削除しても、ビューが参照するテーブルは削除されません。現在のビューが他のビューに参照されている場合、依存関係にあるビューを削除すると、そのビューに依存している他のビューのクエリが失敗します。
ビューを削除する際は、現在のユーザーがそのビューに対する
DROP権限を持っていることを確認する必要があります。Oracleモードでは、ビューを削除するSQL構文は次のとおりです:
obclient>DROP VIEW view_name;例:ビュー
v1を削除します。obclient> DROP VIEW v1;関連ドキュメント
- OceanBaseデータベースのOracleモードでは、ビュー作成時に