キー列の使用法
KEY_COLUMN_USAGE
表では、主キー制約などの列のキー制約について説明します。
USE information_schema;
DESC key_column_usage;
+-------------------------------+--------------+------+------+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------------+--------------+------+------+---------+-------+
| CONSTRAINT_CATALOG | varchar(512) | NO | | NULL | |
| CONSTRAINT_SCHEMA | varchar(64) | NO | | NULL | |
| CONSTRAINT_NAME | varchar(64) | NO | | NULL | |
| TABLE_CATALOG | varchar(512) | NO | | NULL | |
| TABLE_SCHEMA | varchar(64) | NO | | NULL | |
| TABLE_NAME | varchar(64) | NO | | NULL | |
| COLUMN_NAME | varchar(64) | NO | | NULL | |
| ORDINAL_POSITION | bigint(10) | NO | | NULL | |
| POSITION_IN_UNIQUE_CONSTRAINT | bigint(10) | YES | | NULL | |
| REFERENCED_TABLE_SCHEMA | varchar(64) | YES | | NULL | |
| REFERENCED_TABLE_NAME | varchar(64) | YES | | NULL | |
| REFERENCED_COLUMN_NAME | varchar(64) | YES | | NULL | |
+-------------------------------+--------------+------+------+---------+-------+
12 rows in set (0.00 sec)
SELECT * FROM key_column_usage WHERE table_schema='mysql' and table_name='user';
*************************** 1. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: mysql
CONSTRAINT_NAME: PRIMARY
TABLE_CATALOG: def
TABLE_SCHEMA: mysql
TABLE_NAME: user
COLUMN_NAME: Host
ORDINAL_POSITION: 1
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL
*************************** 2. row ***************************
CONSTRAINT_CATALOG: def
CONSTRAINT_SCHEMA: mysql
CONSTRAINT_NAME: PRIMARY
TABLE_CATALOG: def
TABLE_SCHEMA: mysql
TABLE_NAME: user
COLUMN_NAME: User
ORDINAL_POSITION: 2
POSITION_IN_UNIQUE_CONSTRAINT: NULL
REFERENCED_TABLE_SCHEMA: NULL
REFERENCED_TABLE_NAME: NULL
REFERENCED_COLUMN_NAME: NULL
2 rows in set (0.00 sec)
KEY_COLUMN_USAGE
表の列の説明は次のとおりです。
CONSTRAINT_CATALOG
: 制約が属するカタログの名前。値は常にdef
です。CONSTRAINT_SCHEMA
: 制約が属するスキーマの名前。CONSTRAINT_NAME
: 制約の名前。TABLE_CATALOG
: テーブルが属するカタログの名前。値は常にdef
です。TABLE_SCHEMA
: テーブルが属するスキーマの名前。TABLE_NAME
: 制約のあるテーブルの名前。COLUMN_NAME
: 制約のある列の名前。ORDINAL_POSITION
: テーブル内ではなく、制約内の列の位置。位置番号は1
から始まります。POSITION_IN_UNIQUE_CONSTRAINT
: 一意制約と主キー制約は空です。外部キー制約の場合、この列は参照先のテーブルのキーの位置です。REFERENCED_TABLE_SCHEMA
: 制約によって参照されるスキーマの名前。現在、TiDB では、外部キー制約を除くすべての制約におけるこの列の値はnil
です。REFERENCED_TABLE_NAME
: 制約によって参照されるテーブルの名前。現在、TiDB では、外部キー制約を除くすべての制約におけるこの列の値はnil
です。REFERENCED_COLUMN_NAME
: 制約によって参照される列の名前。現在、TiDB では、外部キー制約を除くすべての制約におけるこの列の値はnil
です。