【MySQL】テーブル一覧を確認する方法:サンプル多数あり


ここではMySQLで、テーブル一覧を確認する方法をまとめて紹介しています。

テーブル一覧を確認する方法

SHOW TABLE

テーブル一覧を簡単に確認するには、SHOW TABLESを使います。

SHOW TABLESコマンドでは現在のユーザが参照可能なテーブルのみが表示されます。

FULLを指定するとテーブルのタイプを確認することが出来ます。

SHOW TABLESコマンドを実行するには、事前にUSEコマンドを使ってデータベースの指定(接続)が必要です。詳しくは↓で紹介していますので参考にしてください。
>>【MySQL】現在のデータベースの確認と選択(変更)する方法

SHOW [FULL] TABLES;

SHOW TABLESを実行すると次のように結果を返します。

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| tab           |
| tab1          |
| tab2          |
| tabx1         |
| tabxx         |
| test1         |
| test2         |
| testv1        |
| usr           |
+---------------+
9 rows in set (0.00 sec)

FULLを指定すると次のようにテーブルの種類が表示されます。

mysql> show full tables;
+---------------+------------+
| Tables_in_db1 | Table_type |
+---------------+------------+
| tab           | BASE TABLE |
| tab1          | BASE TABLE |
| tab2          | BASE TABLE |
| tabx1         | BASE TABLE |
| tabxx         | BASE TABLE |
| test1         | BASE TABLE |
| test2         | BASE TABLE |
| testv1        | VIEW       |
| usr           | BASE TABLE |
+---------------+------------+
9 rows in set (0.10 sec)

SHOW TABLES FROM:DBの指定

SHOW TABLES FROM~を使うことで、指定したデータベースのテーブルのみを一覧として表示します。

SHOW TABLES FROM データベース名;

次のように、データベース名を指定して、テーブルの一覧を表示することが出来ます。

mysql> SHOW TABLES FROM db1;
+---------------+
| Tables_in_db1 |
+---------------+
| tab           |
| tab1          |
| tab2          |
| tabx1         |
| tabxx         |
| test1         |
| test2         |
| testv1        |
| usr           |
+---------------+
9 rows in set (0.09 sec)

SHOW TABLES~LIKE:対象の絞り込み

SHOW TABLESコマンドにLIKE演算子を使うことで、一覧に表示するテーブルを条件で絞って表示することが出来ます。

次の例ではテーブル名に”tab”という文字を含むテーブルの一覧を表示しています。

mysql> SHOW TABLES FROM db1 LIKE '%tab%';
+-----------------------+
| Tables_in_db1 (%tab%) |
+-----------------------+
| tab                   |
| tab1                  |
| tab2                  |
| tabx1                 |
| tabxx                 |
+-----------------------+
5 rows in set (0.00 sec)

SHOW TABLES~WHERE:対象の絞り込み

SHOW TABLES~WHEREに条件を指定することで、対象のテーブルを絞り込むことが出来ます。

SHOW TABLES WHERE 条件;

次の例ではdb1データベースの中で、テーブル名がtab1のレコードを検索しています。

mysql> SHOW TABLES WHERE Tables_in_db1 = 'tab1';
+---------------+
| Tables_in_db1 |
+---------------+
| tab1          |
+---------------+
1 row in set (0.00 sec)

INFORMATION_SCHEMA.TABLES

INFORMATION_SCHEMA.TABLESを参照することでテーブルの一覧を取得することが出来ます。

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'データベース名';

実行すると次のような結果が返ってきます。

SELECT文で取得できるので、他のテーブルと結合して利用することも出来ます。

mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db1';
+------------+
| TABLE_NAME |
+------------+
| tab        |
| tab1       |
| tab2       |
| tabx1      |
| tabxx      |
| test1      |
| test2      |
| testv1     |
| usr        |
+------------+
9 rows in set (0.00 sec)

INFORMATION_SCHEMA.TABLESにはTABLE_ROWSやAVG_ROW_LENGTHなどたくさんの項目があり、レコード件数や平均行サイズを確認することもできます。

mysql> SELECT TABLE_NAME,TABLE_ROWS,AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'db1';
+------------+------------+----------------+
| TABLE_NAME | TABLE_ROWS | AVG_ROW_LENGTH |
+------------+------------+----------------+
| tab        |          5 |           3276 |
| tab1       |          6 |           2730 |
| tab2       |          0 |              0 |
| tabx1      |          3 |           5461 |
| tabxx      |          0 |              0 |
| test1      |         10 |           1638 |
| test2      |          5 |           3276 |
| testv1     |       NULL |           NULL |
| usr        |          0 |              0 |
+------------+------------+----------------+
9 rows in set (0.02 sec)