Mysql 获取有关约束的完整信息
我想创建如下结果的查询:Mysql 获取有关约束的完整信息,mysql,foreign-keys,primary-key,Mysql,Foreign Keys,Primary Key,我想创建如下结果的查询: column_name, constraint_name, constraint_type, referenced_table_name, referenced_column_name 我试过这样的东西 SELECT col.column_name, cons.constraint_name, cons.constraint_type,col.referenced_table_name, col.referenced_column_name FROM informat
column_name, constraint_name, constraint_type, referenced_table_name, referenced_column_name
我试过这样的东西
SELECT col.column_name, cons.constraint_name, cons.constraint_type,col.referenced_table_name, col.referenced_column_name
FROM information_schema.table_constraints cons, information_schema.key_column_usage col
WHERE col.table_name = 'countries'
AND cons.constraint_name = col.constraint_name
AND cons.table_name = col.table_name
但是,我弄错了列名…:(
请帮助我……选择“列名称”、“约束名称”、“引用的表名称”、“引用的列名称”`
SELECT `COLUMN_NAME`, `CONSTRAINT_NAME`, `REFERENCED_TABLE_NAME`, `REFERENCED_COLUMN_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `TABLE_NAME` = 'countries'
AND `CONSTRAINT_NAME` <> 'PRIMARY';
来自'information\u schema'。'KEY\u COLUMN\u用法`
其中`TABLE_NAME`='countries'
和'CONSTRAINT_NAME''PRIMARY';
我不知道
constraint\u type
。我在信息架构中找不到此列。主键总是有名称“Primary”,外键总是引用表名,因此您可以从一个表中获得该信息-键列用法
:
SELECT
column_name,
constraint_name,
CASE
WHEN constraint_name = 'PRIMARY' THEN 'PRIMARY KEY'
WHEN referenced_table_name IS NULL THEN 'UNIQUE KEY'
ELSE 'FOREIGN KEY'
END constraint_type,
referenced_table_name,
referenced_column_name
FROM
information_schema.key_column_usage;
约束类型类似(主键、外键、唯一键等)