【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