【MySQL】ビューを作成・更新・削除するSQL


ここではMySQLでビュー(view)を作成する方法を紹介します。

ビューとは

ビューとは、あるテーブルからSELECT文を実行して取得した仮想的な表です。

テーブルは実データを持ちますが、ビューはデータを持ちません。

ビューをSELECTする度に、ビューの定義に書かれたSELECT文が実行され、結果をビューとして実行されます。

複雑な問い合わせや共通的な問合せをビューとして定義しておくと、1つ1つのプログラムで定義しなくても済むというメリットがあります。

ビューを作成するSQL

ビューの作成は、CREATE VIEW文を使います。

ビューの作成にはCREATE VIEW権限とSELECT権限が必要です。

CREATE VIEW文の基本構文

CREATE VIEWの基本構文は次の通りです。
「OR REPLACE」を指定すると、ビューを上書きします。

CREATE [OR REPLACE] VIEW ビュー名
AS 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文、変更はALTER文もしくは[OR REPLACE]を指定して再定義、削除はDROP文で行います。