【MySQL】別のデータベースのテーブル一覧とテーブルタイプを確認する方法
現在接続中のデータベースとは別のデータベースに存在するテーブルの一覧を、テーブルタイプ(BASE TABLE や VIEW など)とともに確認したい場合は、SHOW FULL TABLES ステートメントを使用します。
基本構文
SHOW FULL TABLES FROM db_name
ここで db_name には、テーブル一覧を表示したい対象データベースの名前を指定します。FROM 句にデータベース名を明示することで、現在選択しているデータベースに関係なく、任意のデータベース内のテーブル情報を取得できます。
実行例
たとえば、現在「query」という名前のデータベースを使用している状態で、以下の MySQL クエリを実行すると、「mysql」データベースに含まれるテーブルの一覧と、それぞれのテーブルタイプが結果セットとして表示されます。
mysql> SHOW FULL TABLES FROM mysql; +---------------------------+------------+ | Tables_in_mysql | Table_type | +---------------------------+------------+ | arena | BASE TABLE | | arena1 | BASE TABLE | | columns_priv | BASE TABLE | | dates | VIEW | | dates1 | VIEW | | db | BASE TABLE | | digits | VIEW | | engine_cost | BASE TABLE | | event | BASE TABLE | | func | BASE TABLE | | general_log | BASE TABLE | | gtid_executed | BASE TABLE | | help_category | BASE TABLE | | help_keyword | BASE TABLE | | help_relation | BASE TABLE | | help_topic | BASE TABLE | | innodb_index_stats | BASE TABLE | | innodb_table_stats | BASE TABLE | | ndb_binlog_index | BASE TABLE | | numbers | VIEW | | plugin | BASE TABLE | | proc | BASE TABLE | | procs_priv | BASE TABLE | | proxies_priv | BASE TABLE | | server_cost | BASE TABLE | | servers | BASE TABLE | | slave_master_info | BASE TABLE | | slave_relay_log_info | BASE TABLE | | slave_worker_info | BASE TABLE | | slow_log | BASE TABLE | | tables_priv | BASE TABLE | | test_date | BASE TABLE | | time_zone | BASE TABLE | | time_zone_leap_second | BASE TABLE | | time_zone_name | BASE TABLE | | time_zone_transition | BASE TABLE | | time_zone_transition_type | BASE TABLE | | user | BASE TABLE | +---------------------------+------------+ 38 rows in set (0.01 sec)
ポイント
- 結果セットの「Table_type」列には、通常のテーブルを表す BASE TABLE と、ビューを表す VIEW のいずれかが表示されます。
- このステートメントを実行するには、対象データベースへの参照権限が必要です。
- テーブル名だけを確認したい場合は、FULL を付けない「SHOW TABLES FROM db_name」でも同様に利用できます。
-
MySQLの一時テーブルはSHOW TABLESで確認できる?テーブル一覧に表示されない理由と対処法
ご存じのとおり、SHOW TABLESステートメントを使えば、データベース内のテーブル一覧を簡単に確認できます。しかし、MySQLの一時テーブル(TEMPORARY TABLE)は、このリストには表示されません。言い換えると、SHOW TABLESステートメントでは一時テーブルを確認できないということです。以下の例で具体的に見ていきましょう。例:SHOW TABLESで一時テーブルを検索するここでは、「SalesSummary」という名前の一時テーブルをSHOW TABLESステートメントで取得しようとしています。mysql> SHOW TABLES LIKE %Sales%; Empt
-
MySQLでINFORMATION_SCHEMA.TABLESを使ってテーブルの存在を確認する方法
INFORMATION_SCHEMA.TABLESとはMySQLでデータベース内に特定のテーブルがすでに存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、データベースやテーブルなどのメタ情報を管理する特殊なスキーマであり、そこに対してクエリを実行することで、目的のテーブルが存在するかどうかを簡単に調べられます。基本構文SELECT TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_SCHEMA = yourDatabaseNameAND TAB