MySQLの表一覧:DB・権限・表とビューを確認する
サーバーへ接続したあと、既定DBを選ぶか、SHOW TABLES FROM DB名;で対象を指定します。一覧を得るためにDB/表の作成、統計収集、権限拡大を追加しません。
表とビューを分け、対象を固定する
cwiki_w29_aは隔離検体名です。SHOW TABLESにもビューが含まれ、FULLを付けると種類を区別できます。TEMPORARY表はMySQLの通常のSHOW TABLESには出ません。0件/欠落は不存在の保証ではなく、接続先・フィルタ・権限・対象版も確認します。
SHOW FULL TABLES FROM cwiki_w29_a;
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'cwiki_w29_a'
ORDER BY CAST(TABLE_SCHEMA AS BINARY), CAST(TABLE_NAME AS BINARY);
検体ではBASE TABLE5個とVIEW1個を確認しました。itemsだけのSELECT権限を持つreaderにはitemsだけが見えました。別に作ったTEMPORARY表はMySQL8.4.13のSHOW TABLESには出ず、MariaDB11.8.9には出ました。MariaDBは11.2以降でこの表示が変わっており、両製品を同一視しません。一覧と実際のSELECT可否も別に確認します。
名前中のunderscoreを文字として検索する
LIKEの_は1文字のワイルドカードです。%_logは「文字としての_logで終わる」と同じではありません。明示ESCAPEを使った次のSQLではapp_logだけが一致し、applog/appXlogは一致しません。バックスラッシュ既定やSQL modeへの依存を避けますが、大小文字/照合規則は対象版/設定を別に確認します。
SELECT TABLE_SCHEMA, TABLE_NAME
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'cwiki_w29_a'
AND TABLE_NAME LIKE '%!_log' ESCAPE '!'
ORDER BY CAST(TABLE_SCHEMA AS BINARY), CAST(TABLE_NAME AS BINARY);
容量・件数と一覧の並び
次は対象DBのBASE TABLEだけの容量/統計照会です。TABLE_ROWSはInnoDBの推定で、データ行/全物理ファイルや削除後の即時回収量の計測ではありません。正確なCOUNTでも観測時点/transactionの範囲があり、大きい表へのCOUNTを無条件で追加しません。同値はschema/表名のBINARY比較で順序を固定します。メタデータの照合規則はDB既定のcollationとは別で、単に名前を並べると大小文字等が同値になる場合があるためです。これは表データの照合/設定変更ではありません。
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'cwiki_w29_a'
AND TABLE_TYPE = 'BASE TABLE'
ORDER BY DATA_LENGTH DESC, CAST(TABLE_SCHEMA AS BINARY), CAST(TABLE_NAME AS BINARY);
列数の上位も同値があり得るため、LIMIT前の順序にschema/表名のバイト比較を含めます。GROUP BYにも同じ区別を入れ、大小文字を同一視するメタデータの照合規則でItemsとitemsの列数を合算しないようにしています。可視なCOLUMNSだけの集計であり、見えない列を含む完全なschema比較とは限りません。
SELECT TABLE_SCHEMA, TABLE_NAME, COUNT(*) AS column_count
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'cwiki_w29_a'
GROUP BY TABLE_SCHEMA, TABLE_NAME,
CAST(TABLE_SCHEMA AS BINARY), CAST(TABLE_NAME AS BINARY)
ORDER BY column_count DESC, CAST(TABLE_SCHEMA AS BINARY), CAST(TABLE_NAME AS BINARY)
LIMIT 10;
他製品の旧比較を読むとき
psqlの\dtはpublic固定ではなくsearch_path上で可視な対象です。OracleのNUM_ROWS/BLOCKSは統計で、blocks×8が全DBの実サイズになるわけではありません。SQL Serverのallocation unitの結合条件やLOB/row-overflow/partition等も区別し、旧集計を完全な容量集計として再利用しません。SQLiteのdot commandはshell専用で、SQL文や全RDBMS共通のinformation_schemaではありません。
GUIは対象製品/版を確認します。Azure Data Studioは2026-02-28で廃止され、更新/セキュリティ修正のない状態なので、新規導入の推奨候補から外します。既存の名称は履歴の説明として残します。
次はテーブル定義、列/索引/FKの区別はメタデータを参照してください。元の確認順とコマンド一覧への導線も戻しています。
既存の接続・一覧資料(製品別の補足)
| この記事の要点 |
|
MySQL / MariaDB
基本: SHOW TABLES
旧例の注意:SHOW TABLESにもビューが含まれます。LIKEの_は任意1文字なので%_logを文字列_logと同じに扱いません。可視権限/対象DBも確認します。
-- 接続中の DB のテーブル一覧
SHOW TABLES;
-- 別 DB のテーブル一覧
SHOW TABLES FROM mydb;
-- ワイルドカードで絞り込み
SHOW TABLES LIKE 'user%'; -- user で始まる
SHOW TABLES LIKE '%_log'; -- _log で終わる
-- VIEW も含めるか
SHOW FULL TABLES;
-- +------------------+------------+
-- | Tables_in_mydb | Table_type |
-- +------------------+------------+
-- | users | BASE TABLE |
-- | active_users | VIEW |
-- +------------------+------------+
-- VIEW だけ
SHOW FULL TABLES WHERE Table_type = 'VIEW';
information_schema 経由 (標準 SQL に近い)
旧例の注意:TABLE_ROWS/容量は推定やengine依存です。旧top10は同値順序がなく、FKも参照先schema/列順を省略しています。対象と一意順序を含む読取例を参照します。
-- 全テーブル + 件数 + サイズ
SELECT
TABLE_NAME,
TABLE_ROWS,
ROUND(DATA_LENGTH/1024/1024, 2) AS data_mb,
ROUND(INDEX_LENGTH/1024/1024, 2) AS index_mb,
ENGINE,
TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mydb'
ORDER BY DATA_LENGTH DESC;
-- カラム数の多いテーブル top10
SELECT TABLE_NAME, COUNT(*) AS cols
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'mydb'
GROUP BY TABLE_NAME
ORDER BY cols DESC
LIMIT 10;
-- 外部キー一覧
SELECT TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'mydb'
AND REFERENCED_TABLE_NAME IS NOT NULL;
PostgreSQL
psql のメタコマンド
旧例の注意:psqlの\dtはpublic固定ではなくsearch_path上で可視な対象です。\dはDDL完全復元ではなく、出力ファイルも既存データを上書きしないよう確認します。
-- psql 接続後
\dt -- public スキーマのテーブル
\dt+ -- サイズ・所有者付き
\dt *.* -- 全スキーマ
\dt myschema.* -- 特定スキーマ
\dv -- VIEW 一覧
\di -- インデックス
\ds -- シーケンス
\d table_name -- テーブル定義 (CREATE TABLE 相当)
\d+ table_name -- 詳細 (サイズ・統計付き)
-- 出力をファイルに
\o tables.txt
\dt
\o
SQL クエリで取得
旧例の注意:PGの情報schemaとcatalog/統計は範囲が異なり、n_live_tupは推定です。全DBMS共通の実行例ではありません。
-- pg_catalog 経由 (PostgreSQL ネイティブ)
SELECT schemaname, tablename, tableowner
FROM pg_catalog.pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY schemaname, tablename;
-- information_schema 経由 (標準 SQL)
SELECT table_schema, table_name, table_type
FROM information_schema.tables
WHERE table_schema NOT IN ('pg_catalog', 'information_schema');
-- サイズ付き (実用)
SELECT
schemaname,
relname AS table_name,
pg_size_pretty(pg_total_relation_size(relid)) AS total_size,
pg_size_pretty(pg_relation_size(relid)) AS table_size,
n_live_tup AS row_count
FROM pg_stat_user_tables
ORDER BY pg_total_relation_size(relid) DESC;
Oracle
旧例の注意:Oracle専用です。NUM_ROWS/BLOCKSは統計で、block長8KBの決め打ちは全環境の実サイズではありません。GATHER_SCHEMA_STATSは読取ではなく、一覧確認のために実行しません。
-- 自分が所有するテーブル
SELECT table_name FROM user_tables ORDER BY table_name;
-- 自分がアクセス可能な全テーブル (他スキーマ含む)
SELECT owner, table_name FROM all_tables
WHERE owner NOT IN ('SYS', 'SYSTEM', 'OUTLN', 'DBSNMP')
ORDER BY owner, table_name;
-- DBA 権限がある場合 (全テーブル)
SELECT owner, table_name FROM dba_tables;
-- VIEW
SELECT view_name FROM user_views;
-- サイズ・行数 (統計が必要)
SELECT table_name, num_rows, blocks * 8 / 1024 AS size_mb
FROM user_tables
ORDER BY num_rows DESC;
-- 統計再収集
EXEC DBMS_STATS.GATHER_SCHEMA_STATS(USER);
-- SQL*Plus 上で
DESC table_name;
SQL Server
旧例の注意:SQL Server専用です。旧allocation unitの結合/partition/LOB等とschemaを省略した集計は完全容量を保証しません。USEもMySQLと同じ全接続の挙動と扱いません。
-- sys.tables 経由
SELECT s.name AS schema_name, t.name AS table_name, t.create_date
FROM sys.tables t
JOIN sys.schemas s ON t.schema_id = s.schema_id
ORDER BY s.name, t.name;
-- INFORMATION_SCHEMA 経由 (標準 SQL)
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE';
-- サイズ・行数付き
EXEC sp_spaceused; -- DB 全体
EXEC sp_spaceused 'dbo.users'; -- 個別テーブル
-- 動的: 全テーブルのサイズ一覧
SELECT
t.NAME AS TableName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 / 1024 AS TotalSpaceMB
FROM sys.tables t
JOIN sys.indexes i ON t.OBJECT_ID = i.object_id
JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
WHERE i.index_id <= 1
GROUP BY t.NAME, p.rows
ORDER BY TotalSpaceMB DESC;
-- sqlcmd で
USE mydb;
EXEC sp_tables;
SQLite
旧例の注意:SQLiteのdot commandはshell専用です。sqlite_masterの対象/内部表/ATTACHの範囲も確認し、全RDBMSで同じカタログを使えると扱いません。
-- sqlite3 コンソール
.tables
.schema table_name
.indexes table_name
-- SQL から
SELECT name FROM sqlite_master WHERE type='table' ORDER BY name;
SELECT name FROM sqlite_master WHERE type='index';
SELECT sql FROM sqlite_master WHERE name='users';
各 DB の対応表
| DB | テーブル一覧 | 定義表示 | サイズ |
|---|---|---|---|
| MySQL / MariaDB | SHOW TABLES | DESC tbl / SHOW CREATE TABLE tbl | information_schema.TABLES |
| PostgreSQL | \dt | \d tbl | pg_total_relation_size() |
| Oracle | USER_TABLES | DESC tbl | USER_SEGMENTS |
| SQL Server | sys.tables | sp_help 'tbl' | sp_spaceused |
| SQLite | .tables | .schema tbl | — |
クライアントツール GUI
- MySQL Workbench / phpMyAdmin / DBeaver / HeidiSQL — MySQL/MariaDB
- pgAdmin / DBeaver / Postico — PostgreSQL
- SQL Developer / Toad / DBeaver — Oracle
- SSMS / Azure Data Studio(2026-02-28廃止。新規導入の推奨ではない) / DBeaver — SQL Server
- DBeaver も接続先製品/driver/認証/TLSの対応版を個別に確認する
FAQ
Q: 大量のテーブルがあって絞り込みたい
A: MySQL は SHOW TABLES LIKE 'prefix_%'、PostgreSQL は \dt prefix_*、Oracle は WHERE table_name LIKE 'PREFIX\_%' ESCAPE '\'。
Q: 行数が知りたい
A: MySQL information_schema.TABLES.TABLE_ROWS は概算。正確には SELECT COUNT(*) FROM tbl。推定値に固定の最大誤差を保証せず、観測条件/負荷も確認します。
Q: information_schema は全 RDBMS で使える?
A: 標準由来でも全製品/項目の共通性は保証しません。OracleのUSER/ALL等やSQLiteのschemaは別の仕組みで、可視範囲/対象版を合わせて確認します。
元の書式付きコマンド
元例の注意:元のコマンド表示です。DB名は置換箇所で、既定DB/接続先/権限を確認します。表一覧は未選択ならFROM指定を使い、USEはサーバーへの再接続とは区別します。
| show tables; |
元の確認順と次のページ
元の確認表を保持します。DB一覧を見ただけでは既定DBは選択されないので、SHOW TABLESの前にUSEで選ぶかFROMで指定します。
| 順番 | やること |
|---|---|
| 1 | MYSQLへの接続で接続する |
| 2 | データベース一覧の表示で対象DBを確認する |
| 3 | show tables; を実行する |
| 4 | 必要に応じて テーブル定義を確認 へ進む |
検証範囲と一次資料
新規の小規模MySQL8.4.13/MariaDB11.8.9検体の同一接続/別接続、限定権限と各製品の同梱CLIで検証した範囲です。全言語driver/GUI/接続pool/実SSH経路/各OSの導入や証明書運用・PG/Oracle/SQL Serverの旧例の実行成功を保証しません。本番のschema/認証/設定を変更していません。
- MySQL8.4 USE / SHOW DATABASES / SHOW TABLES
- MySQL接続/TLSオプション / LIKE/ESCAPE
- MariaDB Zero-Configuration SSL / MariaDB SHOW TABLES / PostgreSQL18 psql / Azure Data Studio廃止
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Visual Studio「デザイナーを表示できません」エラーの原因と対処 2026-10-28 12:06:00
- SSH 認証に失敗しました。再試行してください の対処 2026-10-28 12:06:00
- SSH2 秘密鍵の読み込みに失敗しました の原因と対処 2026-10-28 12:06:00
- TeraTerm のよくあるエラーと対処法完全ガイド — Connection refused / 2026-10-28 12:06:00
- Visual Studio エラー一覧|コンパイルエラー・警告の確認方法と対処 2026-10-28 11:39:57
- Whitelabel Error Page の原因と消し方|Spring Boot のエラーページ 2026-10-28 11:39:57
- Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法 2026-10-28 11:39:57
- SQL WHERE 句完全ガイド 2026-10-28 11:39:57
- SQL JOIN 完全ガイド (INNER/LEFT/RIGHT/FULL OUTER) 2026-10-28 11:39:57
- tomcat の起動 / 停止ログと catalina.log・catalina.out の違い 2026-10-28 10:24:23
- Tomcat の起動確認方法 5 つ|localhost:8080・ポート・プロセス・ログ 2026-10-28 10:24:23
- Oracle 19c COMMITの使い方: 暗黙コミット・自動確定・応答不明時の確認 2026-10-28 09:59:09
- Oracle 19c DELETE文|削除対象の確認・COMMIT前の判断・ROLLBACKの条件 2026-10-28 09:59:09
- Oracle 19c INSERT文|INSERT ALL・SELECT・RETURNINGとMERGEの使い分け 2026-10-28 09:59:09
- Oracle 19cのトランザクション制御|COMMIT・ROLLBACK・分離レベルと接続設定 2026-10-28 09:59:09