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 |
+------------+---------+------+-----+---------+----------------+
説明
上記の例では、以下の操作を実行しています。
CREATE TABLE
ステートメントを使用して、products
という名前の新しいテーブルを作成します。- このテーブルには、
id
、name
、price
、created_at
、updated_at
という 5 つの列があります。 - 各列のデータ型、許容値、デフォルト値、キー制約などを指定します。
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