我有一个由某人在MySQL中创建的数据库。我没有数据库的任何文档。
如何知道表之间的关系?
是否有任何查询或过程来生成报告,以便很容易地找到关系?
我可以查看Schema信息并手动找出它,但如果我能生成关系报告就太好了。
发布于 2016-02-15 20:12:00
从编程的角度讲,更好的方法是从INFORMATION_SCHEMA.KEY_COLUMN_USAGE
表中收集数据,如下所示:
SELECT
`TABLE_SCHEMA`, -- Foreign key schema
`TABLE_NAME`, -- Foreign key table
`COLUMN_NAME`, -- Foreign key column
`REFERENCED_TABLE_SCHEMA`, -- Origin key schema
`REFERENCED_TABLE_NAME`, -- Origin key table
`REFERENCED_COLUMN_NAME` -- Origin key column
FROM
`INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` -- Will fail if user don't have privilege
WHERE
`TABLE_SCHEMA` = SCHEMA() -- Detect current schema in USE
AND `REFERENCED_TABLE_NAME` IS NOT NULL; -- Only tables with foreign keys
另一个是
select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
发布于 2016-03-11 20:06:51
一个更有价值的选择可能是,如果你只安装了mysql workbench( refers to)并尝试"Create EER model from database“,.You肯定能够看到表之间的关系。
发布于 2016-02-15 20:09:59
你可以看看information_scheme.KEY_COLUMN_USAGE
table
按照建议,使用KEY_COLUMN_USAGE视图可以快速列出FK(外键引用):
SELECT CONCAT( table_name, '.',
column_name, ' -> ',
referenced_table_name, '.',
referenced_column_name ) AS list_of_fks
FROM information_schema.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = (your schema name here)
AND REFERENCED_TABLE_NAME is not null
ORDER BY TABLE_NAME, COLUMN_NAME;
https://stackoverflow.com/questions/35408854
复制相似问题