MySQLでビュー(VIEW)の一覧を取得する方法を解説
MySQLでビューの一覧を確認するには?
MySQLに作成されているビュー(VIEW)の一覧を取得したい場合、information_schemaデータベースのtablesテーブルを参照するのが基本的な方法です。SELECT文とLIKE演算子を組み合わせることで、データベース内に存在するすべてのビューを簡単に抽出できます。
まずは、実際に使用するSQL構文を見てみましょう。
ビュー一覧を取得するSQL構文
mysql> SELECT TABLE_SCHEMA, TABLE_NAME
-> FROM information_schema.tables
-> WHERE TABLE_TYPE LIKE 'VIEW';
このクエリでは、information_schema.tablesからTABLE_TYPEが「VIEW」である行だけを絞り込み、そのビューが属するスキーマ名(TABLE_SCHEMA)とビュー名(TABLE_NAME)を取得しています。
実行結果の例
上記のクエリを実行すると、以下のようにシステムスキーマ「sys」に含まれる多数のビューが表示されます。MySQL 5.7以降では、パフォーマンス診断用の「sys」スキーマが標準で搭載されており、ここには大量のビューが定義されています。
+--------------+-----------------------------------------------+ | TABLE_SCHEMA | TABLE_NAME | +--------------+-----------------------------------------------+ | sys | version | | sys | innodb_buffer_stats_by_schema | | sys | x$innodb_buffer_stats_by_schema | | sys | innodb_buffer_stats_by_table | | sys | x$innodb_buffer_stats_by_table | | sys | schema_object_overview | | sys | schema_auto_increment_columns | | sys | x$schema_flattened_keys | | sys | schema_redundant_indexes | | sys | ps_check_lost_instrumentation | | sys | latest_file_io | | sys | x$latest_file_io | | sys | io_by_thread_by_latency | | sys | x$io_by_thread_by_latency | | sys | io_global_by_file_by_bytes | | sys | x$io_global_by_file_by_bytes | | sys | io_global_by_file_by_latency | | sys | x$io_global_by_file_by_latency | | sys | io_global_by_wait_by_bytes | | sys | x$io_global_by_wait_by_bytes | | sys | io_global_by_wait_by_latency | | sys | x$io_global_by_wait_by_latency | | sys | innodb_lock_waits | | sys | x$innodb_lock_waits | | sys | memory_by_user_by_current_bytes | | sys | x$memory_by_user_by_current_bytes | | sys | memory_by_host_by_current_bytes | | sys | x$memory_by_host_by_current_bytes | | sys | memory_by_thread_by_current_bytes | | sys | x$memory_by_thread_by_current_bytes | | sys | memory_global_by_current_bytes | | sys | x$memory_global_by_current_bytes | | sys | memory_global_total | | sys | x$memory_global_total | | sys | schema_index_statistics | | sys | x$schema_index_statistics | | sys | x$ps_schema_table_statistics_io | | sys | schema_table_statistics | | sys | x$schema_table_statistics | | sys | schema_table_statistics_with_buffer | | sys | x$schema_table_statistics_with_buffer | | sys | schema_tables_with_full_table_scans | | sys | x$schema_tables_with_full_table_scans | | sys | schema_unused_indexes | | sys | schema_table_lock_waits | | sys | x$schema_table_lock_waits | | sys | statement_analysis | | sys | x$statement_analysis | | sys | statements_with_errors_or_warnings | | sys | x$statements_with_errors_or_warnings | | sys | statements_with_full_table_scans | | sys | x$statements_with_full_table_scans | | sys | x$ps_digest_avg_latency_distribution | | sys | x$ps_digest_95th_percentile_by_avg_us | | sys | statements_with_runtimes_in_95th_percentile | | sys | x$statements_with_runtimes_in_95th_percentile | | sys | statements_with_sorting | | sys | x$statements_with_sorting | | sys | statements_with_temp_tables | | sys | x$statements_with_temp_tables | | sys | user_summary_by_file_io_type | | sys | x$user_summary_by_file_io_type | | sys | user_summary_by_file_io | | sys | x$user_summary_by_file_io | | sys | user_summary_by_statement_type | | sys | x$user_summary_by_statement_type | | sys | user_summary_by_statement_latency | | sys | x$user_summary_by_statement_latency | | sys | user_summary_by_stages | | sys | x$user_summary_by_stages | | sys | user_summary | | sys | x$user_summary | | sys | host_summary_by_file_io_type | | sys | x$host_summary_by_file_io_type | | sys | host_summary_by_file_io | | sys | x$host_summary_by_file_io | | sys | host_summary_by_statement_type | | sys | x$host_summary_by_statement_type | | sys | host_summary_by_statement_latency | | sys | x$host_summary_by_statement_latency | | sys | host_summary_by_stages | | sys | x$host_summary_by_stages | | sys | host_summary | | sys | x$host_summary | | sys | wait_classes_global_by_avg_latency | | sys | x$wait_classes_global_by_avg_latency | | sys | wait_classes_global_by_latency | | sys | x$wait_classes_global_by_latency | | sys | waits_by_user_by_latency | | sys | x$waits_by_user_by_latency | | sys | waits_by_host_by_latency | | sys | x$waits_by_host_by_latency | | sys | waits_global_by_latency | | sys | x$waits_global_by_latency | | sys | metrics | | sys | processlist | | sys | x$processlist | | sys | session | | sys | x$session | | sys | session_ssl_status | +--------------+-----------------------------------------------+ 100 rows in set (0.01 sec)
この例では100件のビューが検出されました。「x$」で始まるビューは、パフォーマンススキーマの生データを直接扱う低レベルなビューであり、通常は人間が読みやすい形式に整形された「x$」なしのビューを利用します。
特定のデータベースのビューだけを取得する
すべてのビューではなく、特定のデータベース(スキーマ)内のビューのみを確認したい場合は、WHERE句に条件を追加します。
mysql> SELECT TABLE_SCHEMA, TABLE_NAME
-> FROM information_schema.tables
-> WHERE TABLE_TYPE = 'VIEW'
-> AND TABLE_SCHEMA = 'your_database_name';
SHOW FULL TABLESを使った別の方法
information_schemaを直接参照する以外にも、SHOW FULL TABLESコマンドを使えば、現在接続しているデータベース内のテーブルとビューの一覧を取得できます。
mysql> USE your_database_name; mysql> SHOW FULL TABLES WHERE Table_type = 'VIEW';
Table_typeが「VIEW」となっている行がビュー、「BASE TABLE」となっている行が通常のテーブルです。手軽に確認したい場合はこちらの方法が便利ですが、複数のデータベースを横断して一覧化したい場合や、スクリプトで処理する場合はinformation_schemaを使う方法が柔軟でおすすめです。
-
MySQLでデータベース一覧とバージョンを取得する方法をわかりやすく解説
MySQLのデータベース一覧とバージョンを確認する方法MySQLサーバー上に存在するデータベースの一覧や、稼働中のサーバーのバージョンを確認する操作は、日々の開発や運用、トラブルシューティングにおいて欠かせない基本スキルです。本記事では、それぞれの情報を取得するための構文と、実際の実行例を交えてわかりやすく解説します。データベース一覧を取得する構文MySQLに登録されているすべてのデータベースの一覧を取得するには、以下の構文を使用します。SHOW DATABASES;サーバーのバージョンを取得する構文接続しているMySQLサーバーのバージョンを確認するには、以下の構文を使用します。SELECT
-
MySQLで行データの最大ID(max(id))を取得する方法
MySQLでテーブル内の最大のIDを取得するには、MAX()関数を使用します。MAX()は指定したカラムの中から最も大きい値を返す集計関数で、IDの最大値を調べたい場合に非常に便利です。基本構文SELECT MAX(カラム名) AS 別名 FROM テーブル名;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable710 (Id int); Query OK, 0 rows affected (0.53 sec)レコードの挿入INSERT文を使って、テーブルにいくつかのレコードを追加します。mysql> inse