INFORMATION_SCHEMAデータベースでスキーマ情報を徹底活用

2024-04-02

MySQLデータベースのテーブルスキーマを表示する方法

方法1:SHOW COLUMNS FROMコマンドを使う

これは、テーブルの構造を詳細に表示する最も簡単な方法です。

SHOW COLUMNS FROM テーブル名;

例:usersテーブルのスキーマを表示

SHOW COLUMNS FROM users;

出力例

Field | Type | Null | Key | Default | Extra
------- | -------- | -------- | -------- | -------- | --------
id | int(11) | NO | PRI | NULL | auto_increment
name | varchar(255) | YES | | NULL |
email | varchar(255) | YES | | NULL |
created_at | timestamp | YES | | CURRENT_TIMESTAMP |
updated_at | timestamp | YES | | CURRENT_TIMESTAMP |

各列の説明

  • Field: カラム名
  • Type: データ型
  • Null: NULL値を許可するかどうかのフラグ (YES または NO)
  • Key: カラムがキーとして使用されているかどうか (PRI は主キー、UNI はユニークキー、MUL はマルチカラムインデックス)
  • Default: デフォルト値
  • Extra: その他の情報 (auto_increment は自動的に増加するカラム)

方法2:DESCRIBEコマンドを使う

SHOW COLUMNS FROMコマンドとほぼ同じですが、DESCRIBEコマンドの方が出力結果が少し見やすい場合があります。

DESCRIBE テーブル名;
DESCRIBE users;
Field | Type | Null | Key | Default | Extra
------- | -------- | -------- | -------- | -------- | --------
id | int(11) | NO | PRI | NULL | auto_increment
name | varchar(255) | YES | | NULL |
email | varchar(255) | YES | | NULL |
created_at | timestamp | YES | | CURRENT_TIMESTAMP |
updated_at | timestamp | YES | | CURRENT_TIMESTAMP |

方法3:MySQL Workbenchを使う

MySQL Workbenchは、MySQLデータベースを管理するためのGUIツールです。

  1. MySQL Workbenchを起動し、接続したいデータベースに接続します。
  2. 左側のナビゲーションツリーで、スキーマを表示したいテーブルを選択します。
  3. 中央のタブ領域で、「構造」タブを選択します。
  • INFORMATION_SCHEMAデータベースのCOLUMNSテーブルをクエリする
  • mysqldumpコマンドを使う

上記のいずれの方法でも、MySQLデータベースのテーブルスキーマを表示することができます。

自分に合った方法を選択して、テーブルの構造を確認しましょう。




# usersテーブルのスキーマを表示

SHOW COLUMNS FROM users;
Field | Type | Null | Key | Default | Extra
------- | -------- | -------- | -------- | -------- | --------
id | int(11) | NO | PRI | NULL | auto_increment
name | varchar(255) | YES | | NULL |
email | varchar(255) | YES | | NULL |
created_at | timestamp | YES | | CURRENT_TIMESTAMP |
updated_at | timestamp | YES | | CURRENT_TIMESTAMP |
# usersテーブルのスキーマを表示

DESCRIBE users;
Field | Type | Null | Key | Default | Extra
------- | -------- | -------- | -------- | -------- | --------
id | int(11) | NO | PRI | NULL | auto_increment
name | varchar(255) | YES | | NULL |
email | varchar(255) | YES | | NULL |
created_at | timestamp | YES | | CURRENT_TIMESTAMP |
updated_at | timestamp | YES | | CURRENT_TIMESTAMP |



テーブルスキーマを表示するその他の方法

INFORMATION_SCHEMAデータベースには、MySQLデータベースに関するメタデータが格納されています。

COLUMNSテーブルには、すべてのテーブルの構造情報が格納されています。

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'テーブル名';
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'users';
TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | COLUMN_DEFAULT | IS_NULLABLE | DATA_TYPE | CHARACTER_MAXIMUM_LENGTH | CHARACTER_OCTET_LENGTH | NUMERIC_PRECISION | NUMERIC_SCALE | DATETIME_PRECISION | COLLATION_NAME | COLUMN_TYPE | COLUMN_KEY | EXTRA | PRIVILEGES | COLUMN_COMMENT
-------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | -------------- | --------------
def | my_database | users | id | 1 | NULL | NO | int | 11 | NULL | 10 | 0 | NULL | utf8mb4_general_ci | int(11) | PRI | auto_increment | select,insert,update,references | 
def | my_database | users | name | 2 | NULL | YES | varchar | 255 | NULL | NULL | NULL | NULL | utf8mb4_general_ci | varchar(255) | | | select,insert,update,references | 
def | my_database | users | email | 3 | NULL | YES | varchar | 255 | NULL | NULL | NULL | NULL | utf8mb4_general_ci | varchar(255) | | | select,insert,update,references | 
def | my_database | users | created_at | 4 | NULL | YES | timestamp | NULL | NULL | NULL | NULL | 0 | utf8mb4_general_ci | timestamp | | | select,insert,update,references | 
def | my_database | users | updated_at | 5 | NULL | YES | timestamp | NULL | NULL | NULL | NULL | 0 | utf8mb4_general_ci | timestamp | | | select,insert,update,references |

mysqldumpコマンドを使って、テーブルのスキーマをダンプファイルに出力することができます。

mysqldump --no-data --skip-extended-insert --create-options テーブル名 > テーブル名.sql

例:usersテーブルのスキーマをusers.sqlファイルに出力

mysqldump --no-data --skip-extended-insert --create-options users > users.sql
-- MySQL dump 10.13  Distrib 8.0.27, for Linux (x86_64)

--
-- Host: localhost    Database: my_database
-- ------------------------------------------------------
-- Server version     8.0.27

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Current database: `my_database`
--

USE `my_database`;

--
-- Table structure for table `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!4010

mysql database schema


セキュリティ対策も安心!Google 検索と Google Cloud Datastore のデータベースセキュリティ

種類: 独自の分散データベースシステム特徴: 膨大な量のウェブページと文書をインデックス化 高速かつ精度の高い検索を提供 ユーザーの検索意図に基づいて結果をランキング膨大な量のウェブページと文書をインデックス化高速かつ精度の高い検索を提供...


MySQLテーブル構造の丸裸化大作戦! データはそっちのけで構造だけゲット

方法1:mysqldumpコマンドを使用するターミナルを開き、MySQLデータベースに接続します。以下のコマンドを実行して、テーブル構造のみをダンプします。--no-dataオプションは、データを含めずに構造のみをダンプすることを指定します。...


PostgreSQL: 安全かつ簡単にユーザーをスーパーユーザーにアップグレードする方法

PostgreSQLでは、スーパーユーザーと呼ばれる特別なユーザーアカウントが存在します。スーパーユーザーは、データベースのすべてのオブジェクトを作成、変更、削除する権限を持ち、他のユーザーに権限を付与することもできます。このチュートリアルでは、既存のユーザーをスーパーユーザーにアップグレードする方法を2つの方法で説明します。...


データベース設計とUMLモデリングにおけるMultiplicityとCardinalityの重要性

Cardinalityは、数学的な概念であり、集合の要素の数を表します。例えば、「1」というCardinalityは、集合に1つの要素しか許されないことを意味します。「0..1」というCardinalityは、0個または1個の要素が許されることを意味します。...


困った時の救世主!Ubuntu 14.04でMySQLサーバーのインストールトラブル解決

必要なもの:Ubuntu 14. 04 がインストールされたコンピューターsudo 権限を持つユーザーアカウント手順:パッケージリストを更新します。MySQL サーバーとクライアントパッケージをインストールします。MySQL インストールスクリプトを実行します。...