ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
information_schema.columns とは
information_schema は MySQL / MariaDB が標準で持つメタデータ用データベースで、サーバ上のすべてのデータベース・テーブル・カラム・インデックスなどの情報を SQL で参照できるようにしたものです。その中の columns ビューにはすべてのカラム情報が 1 行 1 カラムの形で格納されています。
基本クエリ
特定のスキーマ(データベース)に絞って全カラムを取得する最小クエリです。
SELECT *
FROM information_schema.columns
WHERE table_schema = 'スキーマ名';
table_schema はデータベース名と同義です(MySQL では「スキーマ」と「データベース」は同じ意味)。
よく使う列の絞り込み
SELECT * だと 20 列以上返ってくるので、実務では必要な列だけ取り出すのが一般的です。
SELECT
table_name,
column_name,
column_type,
is_nullable,
column_default,
column_comment
FROM information_schema.columns
WHERE table_schema = 'mydb'
ORDER BY table_name, ordinal_position;
information_schema.columns の主な列
| 列名 | 内容 |
|---|---|
table_schema | データベース名 |
table_name | テーブル名 |
column_name | カラム名 |
ordinal_position | カラムの並び順(1 始まり) |
column_default | デフォルト値 |
is_nullable | NULL 可かどうか(YES / NO) |
data_type | 型のみ(int / varchar など) |
column_type | 型 + 長さ + UNSIGNED など完全な表記 |
character_maximum_length | 文字列型の最大長 |
numeric_precision / numeric_scale | 数値型の桁数 |
column_key | PRI / UNI / MUL(インデックス種別) |
extra | auto_increment などの補足 |
column_comment | カラムコメント |
実務でよくあるパターン
1. NULL 許可カラムだけを一覧
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'mydb'
AND is_nullable = 'YES';
2. 特定の型を使っているカラムを洗い出す
-- TEXT / BLOB を使っているカラム
SELECT table_name, column_name, column_type
FROM information_schema.columns
WHERE table_schema = 'mydb'
AND data_type IN ('text','mediumtext','longtext','blob');
3. コメント未設定のカラムを抽出
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'mydb'
AND (column_comment IS NULL OR column_comment = '');
4. 同じカラム名がどのテーブルに存在するか
SELECT table_name
FROM information_schema.columns
WHERE table_schema = 'mydb'
AND column_name = 'user_id';
SHOW COLUMNS との違い
| 項目 | SHOW COLUMNS | information_schema.columns |
|---|---|---|
| 対象範囲 | 1 テーブルのみ | サーバ全体・複数テーブル横断 |
| WHERE 句 | 不可(簡易フィルタのみ) | SQL の WHERE で自由に絞り込み |
| JOIN | 不可 | 他テーブルと JOIN 可能 |
| 用途 | 対話的な確認 | 調査・スキャン・ドキュメント生成 |
注意点
- 権限:
information_schemaはユーザが見える範囲(GRANT されたオブジェクト)しか返さない - 大文字小文字:
table_schemaは OS によって大文字小文字を区別する場合がある(lower_case_table_names 設定に依存) - パフォーマンス: 全テーブルスキャンに近い動きをするため、本番稼働中の DB で多用しない
ドキュメント生成への応用
取得結果を Markdown 表に整形すれば、ER 図や設計書のカラム一覧ドキュメントとして再利用できます。MySQL CLI の --batch オプションでタブ区切り出力に切り替えると整形が楽です。
mysql -u root -p --batch -e "
SELECT table_name, column_name, column_type,
IF(is_nullable='YES','可','不可') AS null_ok,
IFNULL(column_comment,'') AS comment
FROM information_schema.columns
WHERE table_schema = 'mydb'
ORDER BY table_name, ordinal_position
" > mydb_columns.tsv
TSV を awk や Python で読んでテーブル単位の Markdown を吐き出せば、CI で「最新スキーマの設計書」を自動更新できます。
命名規則チェックの例
命名規則違反(例: snake_case 統一なのに camelCase が混入)を一発で検出できます。
-- 大文字を含むカラム名(snake_case 違反)
SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'mydb'
AND BINARY column_name REGEXP '[A-Z]';
関連
- MySQL & MariaDB — 親カテゴリ
- SELECT文 — 取得 SQL の基本
- WHERE句 — 絞り込み条件
- SHOW COLUMNS / DESCRIBE — 単一テーブルのカラム表示
- information_schema.tables — テーブル一覧
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- ダウンロード&インストール方法(Windows)
- インストール方法(Linux)
- コマンド一覧
- SQL
- データ型
- 関数
- 管理ツール
- 設定
- パフォーマンスチューニング関連
- エクスポートおよびインポート
- エラー&トラブル
- 文字コードの確認
- 実行中の SQL の状態確認およびプロセスキルの方法
- パスワードの無効化設定
- root ユーザーの初期パスワード確認方法
- rootユーザーのパスワード変更方法
- LIMIT, OFFSET の始まりと挙動
- mysqlのバージョン確認方法
- MySQLで実行計画を表示する方法
- レプリケーションのステータス確認方法
- 中央値の導き方(バージョン8未満)
- 階層SQL(バージョン8未満)
- パーセンタイルの導き方
- 特定スキーマの全テーブルの全カラム情報を取得する方法
人気ページ
- 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 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Scratch 作品の公開方法 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?