MySQL の VIEW
ここでは MySQL の VIEW についてご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
MySQL の VIEW を作成する
ビューとはクエリー(SELECT 文)で定義される仮想のテーブルで、ビューを使って SELECT 文で普通のテーブルのようにデータを取得することができます。
ビューの SELECT 文では、複数のテーブルを JOIN することもできますし、サブクエリーや UNION などを使うこともできます。
繰り返し同じクエリーでデータを取得したいような状況で、ビューで定義しておくと便利です。
MySQL でビューを作成するには CREATE VIEW 文を使います。シンプルなユーザー定義のビューを作成する構文は次の通りです。
CREATE VIEW [ ビュー名 ]
AS
[ SELECT 文 ]
ビューの定義に使われる SELECT 文では、カラムにユニークなカラム名がついていなければなりません。
SELECT * も使えますが、ビューを作成した時にカラムは固定されるので、後でテーブルにカラムを追加・削除されてもビュー側には反映されません。
エラーの原因になる可能性がありますので、SELECT * はできるだけ、ビューの定義に使わないことをおすすめします。
MySQL の VIEW を使ってデータを取得する
それでは、実際にビューを作成して、ビューを使ってデータを取得してみましょう。
次のような students テーブル、exams テーブル、exam_results テーブルがあります。
例えばこの三つのテーブルを LEFT JOIN して、テスト名と学生の名前と点数を含んだ view_exam_results という名前のビューを作るには次のようにできます。
CREATE VIEW view_exam_results
AS
SELECT er.exam_result_id,
e.exam_id,
e.exam_name_en,
s.student_id,
s.first_name,
s.last_name,
er.score
FROM exam_results AS er
LEFT JOIN exams AS e
ON er.exam_id = e.exam_id
LEFT JOIN students AS s
ON er.student_id = s.student_id;
上のクエリーを実行すると view_exam_results という名前の View が作成されました。
次のような感じで、ビューを普通のテーブルのように SELECT 文で使うことができます。
SELECT * FROM view_exam_results;
SELECT first_name,
last_name,
exam_name_en,
score
FROM view_exam_results
WHERE student_id = 1;
MySQL の VIEW を削除する
MySQL でビューを削除には DROP VIEW 文を使います。
DROP VIEW [ ビュー名 ]
例えば、先ほど作成した view_exam_results という名前のビューを削除するには次のようにします。
DROP VIEW view_exam_results;
上のクエリーを実行して、MySQL Workbench の Schemas タブをリフレッシュすると、View が削除されてるのがわかります。
以上、MySQL の VIEW についてご説明しました。