MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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を使う方法が柔軟でおすすめです。


  1. MySQLでデータベース一覧とバージョンを取得する方法をわかりやすく解説

    MySQLのデータベース一覧とバージョンを確認する方法MySQLサーバー上に存在するデータベースの一覧や、稼働中のサーバーのバージョンを確認する操作は、日々の開発や運用、トラブルシューティングにおいて欠かせない基本スキルです。本記事では、それぞれの情報を取得するための構文と、実際の実行例を交えてわかりやすく解説します。データベース一覧を取得する構文MySQLに登録されているすべてのデータベースの一覧を取得するには、以下の構文を使用します。SHOW DATABASES;サーバーのバージョンを取得する構文接続しているMySQLサーバーのバージョンを確認するには、以下の構文を使用します。SELECT

  2. 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