我正在进行一项任务,我应该找到“空白”数据库的information_schema中的所有表。我可以在MySQL或PostgreSQL中执行此操作。我选择了MySQL。所以,我已经确定了所有表格:
现在,我必须找到有关这些表的详细信息。例如,主键定义,表列,外键,触发器操作等
然而,我遇到的问题是这些表中没有一个列出任何主键或外键或约束等。
我误解了吗?或者可以在任何地方找到这些信息?我很感激任何帮助。
答案 0 :(得分:1)
你应该看table_constraints
。
SELECT `table_name`, `constraint_name`, `constraint_type`
FROM `information_schema`.`table_constraints`
WHERE `table_schema` = 'yourdbname';
这将为您提供约束名称和类型。如果您需要更多详细信息,则需要加入key_column_usage
。
SELECT c.`table_schema`, c.`table_name`, c.`constraint_name`,
c.`constraint_type`, GROUP_CONCAT(k.`column_name` ORDER BY `ordinal_position`) AS 'constraint columns',
CONCAT(k.`referenced_table_name`, '(', GROUP_CONCAT(`referenced_column_name` ORDER BY `position_in_unique_constraint`),')') AS 'references'
FROM `information_schema`.`table_constraints` c
JOIN `information_schema`.`key_column_usage` k USING (`constraint_name`, `table_name`)
WHERE c.`table_schema` = 'yourdbname'
GROUP BY `table_schema`,`table_name`,`constraint_name`,`constraint_type`,`referenced_table_name`;
答案 1 :(得分:0)
您是否尝试过命令DESCRIBE table;
?
如果有主键,您会看到......
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(128) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+