How to find all the relations between all mysql tables?
如何找到所有MySQL表之间的所有关系? 例如,如果我想知道具有大约100个表的数据库中的表的关系。
反正知道这个吗?
从编程方面来说,更好的方法是从INFORMATION_SCHEMA.KEY_COLUMN_USAGE表中收集数据,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 |
有更多列信息,如ORDINAL_POSITION,根据您的目的可能有用。
更多信息:http://dev.mysql.com/doc/refman/5.1/en/key-column-usage-table.html
试试这个:
尝试
SELECT
`TABLE_NAME`,
`COLUMN_NAME`,
`REFERENCED_TABLE_NAME`,
`REFERENCED_COLUMN_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `CONSTRAINT_SCHEMA` = 'YOUR_DATABASE_NAME' AND
`REFERENCED_TABLE_SCHEMA` IS NOT NULL AND
`REFERENCED_TABLE_NAME` IS NOT NULL AND
`REFERENCED_COLUMN_NAME` IS NOT NULL
不要忘记用您的数据库名称替换YOUR_DATABASE_NAME!
在MySQL中可视化关系的快速方法是使用MySQL Workbench对数据库进行逆向工程。
这也可以使用逆向工程来完成,这将导致实体关系图非常类似于以下(尽管您可能必须自己组织它,一旦生成):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | SELECT count(1) totalrelationships , c.table_name tablename, CONCAT(' ',GROUP_CONCAT(c.column_name ORDER BY ordinal_position SEPARATOR ', ')) columnname, CONCAT(' ',GROUP_CONCAT(c.column_type ORDER BY ordinal_position SEPARATOR ', ')) columntype FROM information_schema.columns c RIGHT JOIN (SELECT column_name , column_type FROM information_schema.columns WHERE -- column_key in ('PRI','MUL') AND -- uncomment this line if you want to see relations only with indexes table_schema = DATABASE() AND table_name = 'YourTableName') AS p USING (column_name,column_type) WHERE c.table_schema = DATABASE() -- AND c.table_name != 'YourTableName' GROUP BY tablename -- HAVING (locate(' YourColumnName',columnname) > 0) -- uncomment this line to search for specific column ORDER BY totalrelationships desc, columnname ; |
您可以使用:
1)进入你的数据库:
2)显示所有表格:
3)查看表格的每一列,以收集它的作用以及它的作用:
4)描述很好,因为你可以准确地弄清楚你的表列的作用,但是如果你想更仔细地看一下数据本身:
如果你有大表,那么每一行通常都有一个
此方法为您提供的信息不仅仅是
编辑
正如评论所暗示的那样,上述
一种选择是:您可以进行逆向工程以图解方式理解它。
安装MySQL时,您将获得MySQLWorkbench。您需要打开它并选择要反向工程的数据库。单击"工具"或"数据库"菜单下的某处"反向工程"选项。它会要求您选择表格。您可以选择要理解的表格,也可以选择整个数据库。它将生成一个包含关系的图表。