【完全】MySQLでテーブル一覧を確認する方法まとめ集
CONTENTS
MySQLで「テーブルが見えない」「正しいDBを見ているか不安」になったことはありませんか?
MySQLを使って開発や運用をしていると、次のような場面に必ず直面します。
- 今このデータベースにどんなテーブルが存在しているのかを確認したい
- SHOW TABLES を打ったのに何も表示されない
- 複数DB・複数環境があり、本当に想定のDBを見ているか不安
- テーブルの行数・更新日時・エンジンまで含めて把握したい
MySQLにはテーブル一覧を確認する方法が複数あり、目的に合わない方法を選ぶと混乱や事故の原因になります。
この記事では、
- MySQLでテーブル一覧を表示する 2つの基本手法
- SHOW TABLES と INFORMATION_SCHEMA の 使い分け
- 実務でよく使う 絞り込み・詳細確認
- 表示できないときの 切り分け・トラブルシュート
までを、初心者にも分かりやすく、現場経験者が納得する深さで解説します。
MySQLでテーブル一覧を確認する前に知っておくべき基礎知識
MySQLは「どのデータベースを見ているか」で結果が変わる
MySQLでは、1つのサーバ上に複数のデータベース(スキーマ)を持てます。
そのため、同じ SHOW TABLES でも対象DBが違えば結果は全く変わるのが重要なポイントです。
- テーブルが存在しないのではなく「見ているDBが違う」
- 権限がなくて「見えていない」
この2つは、実務で非常によく起こる勘違いです。
MySQLにログインしてデータベースを選択する基本手順
データベース一覧を確認する(SHOW DATABASES)
まずは、接続ユーザーが参照できるデータベース一覧を確認します。
SHOW DATABASES;
ここに表示されるのは、現在のユーザーに権限があるDBのみです。
表示されないDBは「存在しない」のではなく「権限がない」可能性もあります。
使用するデータベースを選択する(USE)
操作対象のデータベースを明示的に選択します。
USE db_name;
現在選択されているDBは、次のSQLで確認できます。
SELECT DATABASE();
- NULL → DB未選択
- db_name → 現在の操作対象
DB未選択のまま SHOW TABLES を実行するとエラーになるので注意が必要です。
SHOW TABLES でテーブル一覧を表示する方法
SHOW TABLES とは?
SHOW TABLES は、現在選択中のデータベースに存在するテーブル名を一覧表示する最も手軽なコマンドです。
- 速い
- 軽い
- 人が目視で確認しやすい
という特徴があり、運用・調査の初動でよく使われます。
全テーブルを表示する(SHOW TABLES)
SHOW TABLES;
結果にはテーブル名のみが表示されます。
列名が Tables_in_xxx になるのは、xxx がデータベース名のためです。
別のデータベースを指定して表示する(FROM)
DBを切り替えずに確認したい場合は FROM を使います。
SHOW TABLES FROM db_name;
- 本番DBを USE するのが怖い
- 誤操作を防ぎたい
といった場面では、FROM指定が安全です。
LIKE でテーブル名を絞り込む
テーブル数が多い場合は LIKE が便利です。
SHOW TABLES LIKE 'user%';
ワイルドカードの使い方:
%:任意の文字列_:任意の1文字
DB指定と LIKE は併用可能です。
SHOW TABLES FROM db_name LIKE '%meta';
INFORMATION_SCHEMA.TABLES でテーブル一覧を取得する方法
INFORMATION_SCHEMA とは?
INFORMATION_SCHEMA は、MySQLが内部で管理しているメタデータをSQLとして参照できる仕組みです。
SHOW系コマンドと違い、
- 出力形式が安定している
- WHERE / ORDER BY / JOIN が使える
- スクリプトや自動化に向いている
という実務的なメリットがあります。
公式ドキュメント:https://dev.mysql.com/doc/refman/8.0/ja/information-schema.html
特定スキーマのテーブル一覧を取得する基本SQL
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_TYPE = 'BASE TABLE';
BASE TABLE→ 実テーブルのみ- ビューも含めたい場合は条件を外す
ビューを含めて一覧表示する
SELECT
TABLE_NAME,
TABLE_TYPE
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'db_name';
並び替え・条件追加も自由自在
SELECT
TABLE_NAME
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'db_name'
ORDER BY
TABLE_NAME;
複数DB横断の棚卸しや監査では、この方法がほぼ必須になります。
テーブル情報を詳しく確認する方法
SHOW TABLE STATUS で概要を一覧表示
SHOW TABLE STATUS;
確認できる主な情報:
- ストレージエンジン(InnoDB / MyISAM)
- 行数(概算)
- 作成日時・更新日時
- 文字コード・照合順序
LIKEで絞り込みも可能です。
SHOW TABLE STATUS LIKE 'user%';
※ Rows は概算値なので、正確な件数は COUNT(*) を使用します。
SHOW CREATE TABLE でDDLを確認する
SHOW CREATE TABLE table_name;
確認できる内容:
- カラム定義
- 制約(PK / FK)
- インデックス
- エンジン・文字コード
設計レビューや移行時の差分確認で必須のコマンドです。
行数・作成日時・更新日時を確認する実務的な方法
INFORMATION_SCHEMA で日時情報を取得する
SELECT
TABLE_NAME,
CREATE_TIME,
UPDATE_TIME
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'db_name'
AND TABLE_TYPE = 'BASE TABLE';
⚠ InnoDBでは UPDATE_TIME が正確でない場合があります。
確実な更新管理が必要な場合は、アプリ側で更新日時カラムを持つ設計が推奨されます。
SHOW TABLES が表示できない・エラーになる原因と対処
原因① データベース未選択
ERROR 1046 (3D000): No database selected
対処:
USE db_name;
または
SHOW TABLES FROM db_name;
原因② 権限不足
現在の権限を確認します。
SHOW GRANTS;
必要に応じて、管理者に GRANT を依頼します。
公式参考:https://dev.mysql.com/doc/refman/8.0/ja/grant.html
原因③ 接続先の取り違え
- ホスト名
- ポート番号
- ソケット
- ユーザー
本番・開発・検証で環境を間違えるのは非常に多い事故です。
「テーブルがない」と感じたら、まず接続先を疑いましょう。
まとめ:MySQLのテーブル一覧取得は「目的別の使い分け」が最短ルート
- 手早く確認したい → SHOW TABLES
- 条件指定・自動化・横断調査 → INFORMATION_SCHEMA
- 概要を見たい → SHOW TABLE STATUS
- 定義を正確に確認したい → SHOW CREATE TABLE
表示されない場合は、
-
現在のDB
-
権限
-
接続先
この順で確認すれば、ほぼ確実に切り分けできます。
技術を深く理解し、現場で活かしたい方へ
この記事をここまで読み進めたあなたは、
単なるコマンド暗記ではなく、「なぜそうなるのか」「どう使い分けるか」に関心を持っているはずです。
私たちは、MySQLをはじめとするデータベース技術を実務で使いこなし、設計・運用・改善まで考えられるエンジニアが活躍できるチームを目指しています。
- 技術を体系的に理解したい
- 運用・改善まで含めて価値を出したい
- 同じ志向を持つ仲間と成長したい
もし少しでも共感したなら、
一度、私たちの採用情報をのぞいてみてください。
あなたの知識と好奇心が、次の現場で活きるかもしれません。
学んだSQLを、実務で使えるスキルにしたい方へ
本記事ではSQLの基本的な考え方や使い方を解説しましたが、
「実務で使えるレベルまで身につけたい」と感じた方も多いのではないでしょうか。
SQLは、文法を理解するだけでなく、
- どんなデータ構造で使われるのか
- どんなクエリが現場で求められるのか
を意識して学ぶことで、実践力が大きく変わります。
そうした「実務を見据えたSQL学習」を進めたい方には、
完全無料で学べるプログラミングスクール ZeroCode という選択肢もあります。
- SQLを含むWeb・データベース系スキルを体系的に学べる
- 未経験者でも実務を意識したカリキュラム
- 受講料・教材費がかからない完全無料の学習環境
- 完全オンラインでスキマ学習
※学習内容や進め方を確認するだけでもOKです