查看整个MySQL数据库的所有外键约束

Sco*_*olf 41 mysql database foreign-keys

我有一个包含150多张桌子的大型数据库,我最近已经提交过了.我只是想知道是否有一种简单的方法来查看整个数据库的所有外键约束,而不是基于每个表.

Red*_*ter 75

您可以使用这些INFORMATION_SCHEMA表格.例如,INFORMATION_SCHEMA TABLE_CONSTRAINTS表格.

这样的事情应该这样做:

select *
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY'
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法实际列出外键的字段名称? (3认同)

gen*_*pos 15

这是我更喜欢获得有用的信息:

SELECT CONSTRAINT_NAME,
       UNIQUE_CONSTRAINT_NAME, 
       MATCH_OPTION, 
       UPDATE_RULE,
       DELETE_RULE,
       TABLE_NAME,
       REFERENCED_TABLE_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'your_database_name'
Run Code Online (Sandbox Code Playgroud)

  • 这是更好的接受答案 (2认同)

But*_*kus 6

如果您只有一个数据库,用户RedFilter当前接受的答案将正常工作,但如果您有很多数据库则不会.

输入后use information_schema;使用此查询获取外键name_of_db:

select * from `table_constraints` where `table_schema` like `name_of_db` and `constraint_type` = 'FOREIGN KEY'
Run Code Online (Sandbox Code Playgroud)

使用此查询获取name_of_db保存到世界可写文件的外键output_filepath_and_name:

select * from `table_constraints` where `table_schema` like "name_of_db" and `constraint_type` = 'FOREIGN KEY' into outfile "output_filepath_and_name" FIELDS TERMINATED BY ',' ENCLOSED BY '"';
Run Code Online (Sandbox Code Playgroud)