MariaDB DESCRIBEの代替手段:SHOW CREATE TABLEやINFORMATION_SCHEMAを駆使する


構文

DESCRIBE [table_name];

ここで、table_name は情報を確認したいテーブルの名前を指定します。

出力

DESCRIBE ステートメントを実行すると、以下の情報を含む表が出力されます。

列名データ型許容値キーデフォルト値補足情報
列名1データ型1許容値1キー1デフォルト値1補足情報1
列名2データ型2許容値2キー2デフォルト値2補足情報2
..................

DESCRIBE customers;

上記の例では、customers テーブルの構造に関する情報が出力されます。

+------------+---------+------+-----+---------+----------------+
| 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 | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+---------+------+-----+---------+----------------+
  • SHOW CREATE TABLE table_name; ステートメントを使用して、テーブル作成時の SQL コードを確認することもできます。
  • 特定の列に関する情報のみを取得したい場合は、DESCRIBE table_name column_name; のように列名を指定できます。
  • DESCRIBE ステートメントは、ビューの情報も取得できます。


DESCRIBE customers;

出力

+------------+---------+------+-----+---------+----------------+
| 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 | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
+------------+---------+------+-----+---------+----------------+

例2:customers テーブルの name 列に関する情報を記述する

DESCRIBE customers name;

出力

+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| name | varchar(255) | YES | | NULL | |
+------------+---------+------+-----+---------+----------------+

例3:products テーブルを作成し、構造を記述する

CREATE TABLE products (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  price decimal(10,2) NOT NULL,
  created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

DESCRIBE products;

出力

+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| price | decimal(10,2) | NO | | NULL | |
| created_at | datetime | NO | | CURRENT_TIMESTAMP | |
| updated_at | datetime | NO | | CURRENT_TIMESTAMP | ON UPDATE CURRENT_TIMESTAMP |
+------------+---------+------+-----+---------+----------------+

説明

上記の例では、以下の操作を実行しています。

  1. CREATE TABLE ステートメントを使用して、products という名前の新しいテーブルを作成します。
  2. このテーブルには、idnamepricecreated_atupdated_at という 5 つの列があります。
  3. 各列のデータ型、許容値、デフォルト値、キー制約などを指定します。
  4. DESCRIBE products; ステートメントを使用して、作成したテーブルの構造を記述します。


SHOW CREATE TABLE ステートメント

SHOW CREATE TABLE ステートメントは、テーブルの作成時に使用された SQL コードを出力します。これは、テーブル構造の詳細を確認する別の方法です。

SHOW CREATE TABLE table_name;

SHOW CREATE TABLE customers;

出力

CREATE TABLE `customers` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INFORMATION_SCHEMA テーブル

INFORMATION_SCHEMA データベースには、データベース内のすべてのテーブルに関する情報を含むテーブルが格納されています。これらのテーブルを使用して、DESCRIBE ステートメントと同様の情報にアクセスできます。

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_KEY
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'customers';

出力

+------------+---------+-------------+-----------+
| COLUMN_NAME | DATA_TYPE | IS_NULLABLE | COLUMN_KEY |
+------------+---------+-------------+-----------+
| id          | int(11) | NO          | PRIMARY KEY |
| name        | varchar(255) | YES         |           |
| email       | varchar(255) | YES         |           |
| created_at | datetime | YES         |           |
| updated_at | datetime | YES         |           |
+------------+---------+-------------+-----------+

サードパーティ製ツール

データベース管理 GUI やコマンドラインツールの中には、DESCRIBE ステートメントと同様の機能を提供するものがあります。これらのツールは、テーブル構造をより視覚的にわかりやすく表示したり、追加機能を提供したりすることがあります。

  • DBeaver
  • HeidiSQL
  • MySQL Workbench