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_schemaのKEY_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を参照するとよいでしょう。用途に応じて両方の方法を使い分けることで、効率的にデータベース構造を管理できます。
-
MySQLでテーブルのすべてのフィールド(カラム)を表示する方法
MySQLで特定のテーブルに含まれるすべてのフィールド(カラム)名を確認したい場合、information_schema.columns テーブルを利用する方法が便利です。table_schema にデータベース名、table_name に対象のテーブル名を指定することで、そのテーブルの全フィールドを一覧表示できます。基本の構文以下の構文を使うことで、指定したテーブルのすべてのカラム名を取得できます。select column_name as anyAliasName from information_schema.columns where t
-
MySQLでテーブルが存在するかどうかを確認する方法【INFORMATION_SCHEMA.TABLES活用】
MySQLでテーブルの存在を確認するにはMySQLにおいて、特定のテーブルがデータベース内に存在するかどうかを確認したい場合、INFORMATION_SCHEMA.TABLES を利用するのが一般的な方法です。このシステムビューには、サーバー上のすべてのデータベースとテーブルに関するメタデータが格納されており、これを参照することで目的のテーブルが存在するかを簡単に調べられます。基本構文テーブルの存在確認は、以下のようなSELECT文で行います。select table_name from information_schema.tables where table_schema=database