この記事では、ビューの作成、変更、削除の方法について説明します。
ビューはテーブルのクエリ結果を表示するために使用されます。テーブルが使用できる場合のほとんどすべての場合、ビューも使用できます。頻繁にアクセスするデータが複数のテーブルに分散している場合、ビューを使用するのが最適な方法です。
通常のビューの作成
CREATE VIEW ステートメントを使用して通常のビューを作成できます。作成後は、そのビューに対してDMLステートメントを実行できます。
Oracleモードでは、ビューを作成するためのSQL構文は以下のとおりです:
create_view_stmt:
CREATE [OR REPLACE] [[NO] FORCE] VIEW view_name [(column_name_list)] AS select_stmt;
column_name_list:
column_name [, column_name ...]
ここで:
OR REPLACE:作成しようとしているビュー名が既に存在する場合、新しい定義を使用してビューを再作成します。select_stmt:ビューを定義するSELECTステートメントであり、このステートメント内の情報はベーステーブルまたは他のビューから選択できます。説明
- OceanBaseデータベースのOracleモードでは、ビュー作成時に
--stringを使用してビューにコメントを追加できます。この場合、コメントはビュー定義に保存されます。--stringはselect_stmtの任意の位置にコメントとして記述できます。
[NO] FORCE:ビュー作成時に、そのビューに対応するベーステーブルや参照対象のオブジェクトタイプが存在するかどうか、またビューが属するスキーマの所有者が権限を持っているかどうかを考慮したくない場合は、FORCEを指定する必要があります。ベーステーブルが存在し、ビューが属するスキーマの所有者が権限を持っていることを確認済みの場合は、
NO FORCEを指定できます。デフォルトはNO FORCEです。column_name_list:ベーステーブルと同様に、ビューも一意の列名を持たなければならず、重複してはなりません。デフォルトでは、SELECTステートメントで取得される列名がビューの列名として使用されます。ビューの列に明確な名前を定義したい場合は、オプションの
column_name_list句を使用でき、ID同士はカンマで区切ります。column_name_list内の名前の数は、SELECTステートメントで取得される列数と等しくなければなりません。SELECTステートメントで取得される列は、テーブル列への単純な参照である場合もあります。関数、定数値、演算子などを使用した式である場合もあります。
例:
テーブル
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モードでは、ビュー作成時に