ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?