MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでテーブルに設定されたすべての制約を確認する方法

MySQLでは、テーブルに定義された制約(PRIMARY KEY、UNIQUE、FOREIGN KEYなど)を確認したい場面がよくあります。この記事では、テーブル上のすべての制約を表示するための2つの方法をわかりやすく解説します。

方法1:SHOW CREATE TABLEコマンドを使う

最も手軽な方法は、SHOW CREATE TABLEコマンドを使用することです。このコマンドを実行すると、テーブルを作成した際のCREATE TABLE文がそのまま表示され、そこにPRIMARY KEYやUNIQUE KEYなどの制約定義が含まれています。

構文は以下のとおりです。

SHOW CREATE TABLE テーブル名;

方法2:information_schemaを利用する

もうひとつの方法は、MySQLのシステムデータベースであるinformation_schemaKEY_COLUMN_USAGEテーブルを参照する方法です。こちらの方法では、制約名や参照先のカラム・テーブルなど、より詳細な情報を取得できます。

構文は以下のとおりです。

SELECT COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'テーブル名';

実行例:information_schemaでの確認

それでは、実際にサンプルテーブル「ConstraintDemo」に対して上記のクエリを実行してみましょう。

mysql> SELECT COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_COLUMN_NAME, REFERENCED_TABLE_NAME
    -> FROM information_schema.KEY_COLUMN_USAGE
    -> WHERE TABLE_NAME = 'ConstraintDemo';

実行結果は以下のようになります。カラム「Id」に対してPRIMARY制約と一意制約(Id)が設定されていることが確認できます。

+-------------+-----------------+------------------------+-----------------------+
| COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_COLUMN_NAME | REFERENCED_TABLE_NAME |
+-------------+-----------------+------------------------+-----------------------+
| Id          | PRIMARY         | NULL                   |                  NULL |
| Id          | Id              | NULL                   |                  NULL |
+-------------+-----------------+------------------------+-----------------------+
2 rows in set, 2 warnings (0.04 sec)

実行例:SHOW CREATE TABLEでの確認

次に、SHOW CREATE TABLEコマンドでも同じテーブルを確認してみます。

mysql> SHOW CREATE TABLE ConstraintDemo;

実行結果は以下のとおりです。CREATE TABLE文の中にPRIMARY KEY (`Id`)UNIQUE KEY `Id` (`Id`)という制約定義が含まれているのがわかります。

+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table          | Create Table                                                                                                                                                                                               |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ConstraintDemo | CREATE TABLE `constraintdemo` (`Id` int(11) NOT NULL,`Name` varchar(100) NOT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `Id` (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

まとめ

テーブルの制約を確認するには、テーブル定義全体を把握できるSHOW CREATE TABLEが手軽で便利です。一方、外部キーの参照先など詳細情報が必要な場合は、information_schema.KEY_COLUMN_USAGEを参照するとよいでしょう。用途に応じて両方の方法を使い分けることで、効率的にデータベース構造を管理できます。

  1. MySQLでテーブルのすべてのフィールド(カラム)を表示する方法

    MySQLで特定のテーブルに含まれるすべてのフィールド(カラム)名を確認したい場合、information_schema.columns テーブルを利用する方法が便利です。table_schema にデータベース名、table_name に対象のテーブル名を指定することで、そのテーブルの全フィールドを一覧表示できます。基本の構文以下の構文を使うことで、指定したテーブルのすべてのカラム名を取得できます。select column_name as anyAliasName from information_schema.columns     where t

  2. MySQLでテーブルが存在するかどうかを確認する方法【INFORMATION_SCHEMA.TABLES活用】

    MySQLでテーブルの存在を確認するにはMySQLにおいて、特定のテーブルがデータベース内に存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLES を利用するのが一般的な方法です。このシステムビューには、サーバー上のすべてのデータベースとテーブルに関するメタデータが格納されており、これを参照することで目的のテーブルが存在するかを簡単に調べられます。基本構文テーブルの存在確認は、以下のようなSELECT文で行います。select table_name from information_schema.tables where table_schema=database