我创造了它们,但我忘了它们是哪些。
我只想
答案 0 :(得分:60)
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where table_name = 'table_name' and constraint_type = 'UNIQUE';
答案 1 :(得分:8)
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = 'mysql'
答案 2 :(得分:5)
这不会产生优雅的输出,但很容易记住:
SHOW CREATE TABLE table_name;
答案 3 :(得分:3)
此查询返回主键,唯一键和外键:
show indexes from table_name;
答案 4 :(得分:2)
OP要求提供一张表,这样做。
此外,删除最后一个where
子句将显示受唯一约束保护的数据库的所有列:
SELECT
CONSTRAINT_NAME,
TABLE_NAME,
COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_NAME LIKE 'UNIQ%'
AND TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'your_table_name';
不幸的是,mysql不利于根据查询结果删除索引。您可以执行以下查询的输出以删除2个查询中的所有唯一列:
SELECT CONCAT(
'ALTER TABLE ',
TABLE_NAME,
' DROP INDEX ',
CONSTRAINT_NAME,
'; -- drops ',
COLUMN_NAME,
' constraint'
)
FROM information_schema.KEY_COLUMN_USAGE
WHERE
CONSTRAINT_NAME LIKE 'UNIQ%'
AND TABLE_SCHEMA = 'your_database_name';