ここでは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)