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 テーブルがあります。

MySQL の VIEW 1

MySQL の VIEW 2

MySQL の VIEW 3


例えばこの三つのテーブルを 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;

MySQL の VIEW 4


上のクエリーを実行すると view_exam_results という名前の View が作成されました。

MySQL の VIEW 5


次のような感じで、ビューを普通のテーブルのように SELECT 文で使うことができます。

SELECT * FROM view_exam_results;

MySQL の VIEW 6


SELECT 	first_name,
		last_name,
		exam_name_en,
		score
FROM 	view_exam_results
WHERE 	student_id = 1;

MySQL の VIEW 7


MySQL の VIEW を削除する

MySQL でビューを削除には DROP VIEW 文を使います。

DROP VIEW [ ビュー名 ]

例えば、先ほど作成した view_exam_results という名前のビューを削除するには次のようにします。

DROP VIEW view_exam_results;

上のクエリーを実行して、MySQL Workbench の Schemas タブをリフレッシュすると、View が削除されてるのがわかります。

MySQL の VIEW 8


以上、MySQL の VIEW についてご説明しました。

© 2024 MySQL 入門