INFORMATION_SCHEMA: MariaDBの制約値を取得する
MariaDBで制約値を表示する方法
SHOW CREATE TABLE ステートメントを使う
このステートメントは、テーブルのDDL (Data Definition Language) を表示します。DDLには、テーブルの構造、制約、インデックスなどの情報が含まれます。
SHOW CREATE TABLE テーブル名;
例:
SHOW CREATE TABLE employees;
出力例:
CREATE TABLE `employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) DEFAULT NULL,
`PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
上記の例では、employees
テーブルには PRIMARY KEY
制約が設定されていることが分かります。
INFORMATION_SCHEMA
データベースには、MariaDBのすべてのテーブルに関するメタデータが格納されています。このデータベースの TABLE_CONSTRAINTS
テーブルには、各テーブルの制約に関する情報が含まれます。
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = 'データベース名'
AND TABLE_NAME = 'テーブル名';
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME = 'employees';
CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ENFORCED | REFERENCE_TABLE_SCHEMA | REFERENCE_TABLE_NAME | REFERENCE_COLUMN_NAME
-------------- | ------------- | ------------- | -------------- | -------- | ------------------------ | ---------------------- | ------------------------
PRIMARY | test | employees | PRIMARY KEY | YES | NULL | NULL | NULL
GUIツールを使う
MySQL WorkbenchなどのGUIツールを使うと、制約値を簡単に表示することができます。
補足
SHOW CREATE TABLE
ステートメントは、制約値だけでなく、テーブルの構造に関するその他の情報も表示します。INFORMATION_SCHEMA
データベースを使う方法は、より詳細な情報を表示することができます。- GUIツールを使う方法は、最も簡単で分かりやすい方法です。
SHOW CREATE TABLE employees;
CREATE TABLE `employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) DEFAULT NULL,
`PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INFORMATION_SCHEMA データベースを使う
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_SCHEMA = 'test'
AND TABLE_NAME = 'employees';
CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ENFORCED | REFERENCE_TABLE_SCHEMA | REFERENCE_TABLE_NAME | REFERENCE_COLUMN_NAME
-------------- | ------------- | ------------- | -------------- | -------- | ------------------------ | ---------------------- | ------------------------
PRIMARY | test | employees | PRIMARY KEY | YES | NULL | NULL | NULL
- 上記のサンプルコードは、MariaDB 10.5.14で動作確認しています。
- 他のバージョンの MariaDB では、構文や出力結果が異なる場合があります。
MariaDBで制約値を表示する他の方法
EXPLAIN
ステートメントは、クエリの実行計画を表示します。実行計画には、テーブルの制約に関する情報も含まれます。
EXPLAIN SELECT * FROM テーブル名;
EXPLAIN SELECT * FROM employees;
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra
-- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | --------
1 | SIMPLE | employees | NULL | ALL | NULL | NULL | NULL | NULL | 100 | 100 | Using where; Using index
mysql
コマンドラインツールを使って、制約値を表示することができます。
mysql -u ユーザー名 -p パスワード -D データベース名 -e "SHOW CREATE TABLE テーブル名;"
mysql -u root -p password -D test -e "SHOW CREATE TABLE employees;"
CREATE TABLE `employees` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`age` int(11) DEFAULT NULL,
`PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
その他のツールを使う
mysql
コマンドラインツールを使う方法は、シンプルで分かりやすい方法です。- その他のツールを使う方法は、GUIで操作したい場合に便利です。
mariadb