5.

メタデータ関連

編集

MySQLのメタデータ関連のSQLに関する記事です。MySQL / MariaDB のスキーマ情報(テーブル定義、カラム情報、インデックス情報など)を取得するためのSQLをまとめています。

子ページから項目を選択してください。

本ページの子ページ

メタデータの主な参照先

MySQL / MariaDB はメタデータを information_schema という仮想データベースで提供します。SQLでテーブル一覧・カラム情報・権限・統計情報などを取得できます。

ビュー用途
information_schema.SCHEMATAデータベース(スキーマ)一覧
information_schema.TABLESテーブル一覧(ビュー含む)
information_schema.COLUMNS全テーブルのカラム情報
information_schema.STATISTICSインデックス情報
information_schema.KEY_COLUMN_USAGE主キー・外部キー構成
information_schema.TABLE_CONSTRAINTS制約一覧
information_schema.PROCESSLIST実行中セッション
information_schema.USER_PRIVILEGESユーザー権限

よく使うクエリ集

データベース一覧

SHOW DATABASES;

-- 同等のinformation_schemaクエリ
SELECT SCHEMA_NAME
  FROM information_schema.SCHEMATA;

テーブル一覧

SHOW TABLES;
SHOW TABLES FROM mydb;

-- 行数・サイズも見たい場合
SELECT TABLE_NAME, TABLE_ROWS, DATA_LENGTH
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'mydb';

カラム情報

DESC users;
SHOW COLUMNS FROM users;

SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT
  FROM information_schema.COLUMNS
 WHERE TABLE_SCHEMA = 'mydb'
   AND TABLE_NAME = 'users';

インデックス情報

SHOW INDEX FROM users;

SELECT INDEX_NAME, COLUMN_NAME, NON_UNIQUE
  FROM information_schema.STATISTICS
 WHERE TABLE_SCHEMA = 'mydb'
   AND TABLE_NAME = 'users';

外部キー

SELECT CONSTRAINT_NAME, COLUMN_NAME,
        REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
  FROM information_schema.KEY_COLUMN_USAGE
 WHERE TABLE_SCHEMA = 'mydb'
   AND TABLE_NAME = 'orders'
   AND REFERENCED_TABLE_NAME IS NOT NULL;

CREATE TABLE文の取得

SHOW CREATE TABLE users;

テーブルサイズランキング

SELECT TABLE_NAME,
        ROUND((DATA_LENGTH + INDEX_LENGTH)/1024/1024, 2) AS size_mb
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'mydb'
 ORDER BY size_mb DESC;

関連

編集
Post Share
子ページ
  1. カラム定義の確認
同階層のページ
  1. 基本構文
  2. データベース関連
  3. テーブル関連
  4. ユーザー関連
  5. メタデータ関連
  6. NULL判定を伴うCASE分の使用方法