MySQL のビューの一覧を取得する
ここでは MySQL でデータベース内のビュー (VIEW) の一覧を取得する方法をご説明します。
SHOW FULL TABLES でビューの一覧を取得する
MySQL の SHOW TABLES 文を使うと、データベース内のテーブルとビューの一覧を取得することができます。
SHOW FULL TABLES のように FULL 修飾子をつけると、Table_type も取得でき、WHERE Table_type = 'VIEW' のようにフィルターすることで、選択されているデータベースのビューの一覧を取得することができます。
SHOW FULL TABLES
WHERE Table_type = 'VIEW';
[実行結果]
ビューの名前でフィルターしたい時は LIKE 句を使って指定できます。
例えば、SHOW FULL TABLES で、名前に max という文字が入っているテーブルとビューを取得したい時は次のようにできます。
SHOW FULL TABLES
LIKE '%max%';
[実行結果]
LIKE と WHERE は併用できないため、以下のようにするとエラーにはなりませんが、期待した結果が得られませんのでご注意ください。
SHOW FULL TABLES
WHERE Table_type = 'VIEW'
LIKE '%max%'
[実行結果]
SHOW CREATE VIEW でビューの定義を取得する
見つけたビューの定義を取得したい場合は SHOW CREATE VIEW 文が使えます。
ビューが存在するデータベースを選択して実行します。
例えば、view_exam_min_max_scores という名前のビューの定義を取得したい場合は、次のようにできます。
SHOW CREATE VIEW view_exam_min_max_scores;
[実行結果]
結果セットの Create View カラムにビューの定義があります。
SHOW CREATE TRIGGER や SHOW CREATE FUNCTION で定義を取得した時と違い、改行されていないので読みにくいですが、ビューの定義が取得できます。
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_exam_min_max_scores` AS select `exam_results`.`exam_id` AS `exam_id`,min(`exam_results`.`score`) AS `min_score`,max(`exam_results`.`score`) AS `max_score` from `exam_results` group by `exam_results`.`exam_id`
INFORMATION_SCHEMA.VIEWS でビューの一覧を取得する
MySQL の INFORMATION_SCHEMA.VIEWS システムビューからも、ビューの一覧を取得することができます。
INFORMATION_SCHEMA.VIEWS は、sys データベースも含め、全データベースのビューを返します。
SELECT *
FROM INFORMATION_SCHEMA.VIEWS;
[実行結果]
データベースを指定するには TABLE_SCHEMA = 'データベース名' のようにフィルターします。
ビュー名でフィルターするには、TABLE_NAME カラムを使ってフィルターできます。
例えば、INFORMATION_SCHEMA.VIEWS から school_db データベースの、名前に max というキーワードが含まれるビューを取得するには次のようにできます。
SELECT *
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'school_db'
AND TABLE_NAME LIKE '%max%';
[実行結果]
school_db データベースの view_exam_min_max_scores ビューの情報が取得できています。
INFORMATION_SCHEMA.VIEWS の VIEW_DEFINITION カラムにも ビューの SELECT 文が格納されていますが、SHOW CREATE VIEW のほうが完全な構文に近いです。
'select `school_db`.`exam_results`.`exam_id` AS `exam_id`,min(`school_db`.`exam_results`.`score`) AS `min_score`,max(`school_db`.`exam_results`.`score`) AS `max_score` from `school_db`.`exam_results` group by `school_db`.`exam_results`.`exam_id`'
MySQL Workbench でビューを確認・編集する
MySQL Workbench の Schema タブの [Database] > [Views] でも、ビューを確認することができます。
編集するには、編集したいビューを選択して右クリックし [Alter View...] を選択します。
ビューの定義が表示され、編集できる状態になります。
変更すると [Apply] ボタンが押せるようになるので、[Apply] ボタンをクリックします。
確認画面が表示されるので、よければ [Apply] ボタンをクリックします。
これで、ビューが更新されました。
以上、MySQL でビューの一覧を取得する方法ご説明しました。