【ORACLE】ビューを作成・更新・削除するSQL
ここではORACLEデータベースでビュー(view)を作成する方法を紹介します。
ビューの確認方法は↓で紹介していますので参考にしてください。
>>【ORACLE】ビューの一覧や定義を確認するSQL
ビューとは
ビューとは、あるテーブルからSELECT文を実行して取得した仮想的な表です。
テーブルは実データを持ちますが、ビューはデータを持ちません。
ビューをSELECTする度に、ビューの定義に書かれたSELECT文が実行され、結果をビューとして実行されます。
複雑な問い合わせや共通的な問合せをビューとして定義しておくと、1つ1つのプログラムで定義しなくても済むというメリットがあります。
ビューを作成するSQL
ビューの作成は、CREATE VIEW文を使います。
ビューの作成や更新、削除にはCREATE VIEW、CREATE ANY VIEW、 DROP ANY VIEW権限が必要です。
システム権限の付与の方法については↓で紹介していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL
CREATE VIEW文の基本構文
CREATE VIEWの基本構文は次の通りです。
CREATE [OR REPLACE] [FOREC|NOFORCE] VIEW ビュー名
AS SELECT文 [WITH READ ONLY] [WITH CHECK OPTION];
・「OR REPLACE」を指定すると、ビューを上書きします。
・「FORCE」を指定すると、テーブルが存在しない場合などエラーがあっても強制的にVIEWを作成します。「NOFORCE」を指定した場合、表が存在し必要な権限あがる場合のみ、VIEWを作成します。
・[WITH READ ONLY]を指定すると、更新を禁止し、読み取り専用にします。
・[WITH CHECK OPTION]を指定すると、VIEWでSELECTした行に対してのみ、挿入や更新を可能にします。
CREATE VIEW文のSQLサンプル
CREATE VIEWのSQLサンプルを紹介します。
次のSQLでは、EMPテーブルからNAME列、AGE列、DEPT_CD列、DEPT_NAME列をVIEWとして参照できるようにしています。
CREATE VIEW v_emp AS
SELECT
a.name
,a.age
,a.dept_cd
,b.dept_name
from
emp a
inner join dept b on a.dept_cd = b.dept_cd
;
ビューを更新するSQL
ビューを更新するときは、ALTER文を使います。
無効なビューの再コンパイルやビューの制約を変更することが出来ます。
ALTER VIEW v_emp AS
SELECT
a.name
,a.age
,a.dept_cd
,b.dept_name
from
emp a
inner join dept b on a.dept_cd = b.dept_cd
;
ビューの再定義をするときは、CREATE文で[OR REPLACE]を指定し、再定義する方法もあります。
CREATE OR REPLACE VIEW v_emp AS
SELECT
a.name
,a.age
,a.dept_cd
,b.dept_name
from
emp a
inner join dept b on a.dept_cd = b.dept_cd
;
ビューを削除するSQL
ビューを削除するときはDROP文を使います。
DROP VIEW v_emp;
まとめ
ビューの作成はCREATE VIEW文、変更は[OR REPLACE]を指定、削除はDROP文で行います。
ビューを参照するにはオブジェクト権限を付与する必要があります。オブジェクト権限については↓で紹介していますので参考にしてください。
・【ORACLE】オブジェクト権限を付与・取消するSQL
・【ORACLE】オブジェクト権限を確認するSQL