現在使用中とは別のMySQLデータベース内のテーブル一覧とテーブルタイプを確認する方法
現在接続しているデータベースとは別のデータベースに存在するテーブルの一覧と、それぞれのテーブルタイプ(実テーブルかビューか)を確認したい場合は、SHOW FULL TABLES ステートメントを使用します。
基本構文
SHOW FULL TABLES IN db_name
db_name の部分には、テーブル一覧を表示したいデータベース名を指定します。
実行例
たとえば、現在「query」というデータベースに接続している状態で、「mysql」データベース内のテーブル一覧とテーブルタイプを確認するには、次のように実行します。
mysql> SHOW FULL TABLES IN 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)
結果の見方
出力結果は2つのカラムで構成されています。
- Tables_in_mysql:指定したデータベース(この場合は mysql)内のテーブル名
- Table_type:テーブルの種類。「BASE TABLE」は通常の実テーブル、「VIEW」はビューを表します
補足:特定のテーブルタイプだけを抽出する
ビューだけ、または実テーブルだけを確認したい場合は、INFORMATION_SCHEMA.TABLES を参照すると便利です。
SELECT TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'mysql' AND TABLE_TYPE = 'VIEW';
このように WHERE 句で TABLE_TYPE を絞り込むことで、目的の種類のテーブルだけを効率的に一覧できます。
-
MySQLで現在のデータベース以外のテーブル一覧を確認する方法
MySQLでは、現在使用中のデータベースとは別のデータベースに存在するテーブルを簡単に確認できます。そのために利用するのが「SHOW TABLES FROM」ステートメントです。基本構文Show Tables from Database_name;「Database_name」の部分に、テーブル一覧を確認したいデータベース名を指定するだけで、現在選択中のデータベースを切り替えることなく、対象のデータベース内のテーブルを一覧表示できます。実行例例えば、現在「new」というデータベースを使用している状態で、「gaurav」という別のデータベースのテーブル一覧を表示したい場合は、以下のようにクエリを
-
MySQLでINFORMATION_SCHEMA.TABLESを使ってテーブルの存在を確認する方法
INFORMATION_SCHEMA.TABLESとはMySQLでデータベース内に特定のテーブルがすでに存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、データベースやテーブルなどのメタ情報を管理する特殊なスキーマであり、そこに対してクエリを実行することで、目的のテーブルが存在するかどうかを簡単に調べられます。基本構文SELECT TABLE_NAMEFROM INFORMATION_SCHEMA.TABLESWHERE TABLE_SCHEMA = yourDatabaseNameAND TAB