在mysql信息\u架构中找不到表详细信息

在mysql信息\u架构中找不到表详细信息,mysql,information-schema,Mysql,Information Schema,我正在做一项作业,我应该在“空白”数据库的信息模式中找到所有的表。我可以在MySQL或PostgreSQL中实现这一点。我选择了MySQL。因此,我确定了所有表格: 字符集 校勘 排序规则\字符\集合\适用性 纵队 列(u)特权 指数统计 键\u列\u用法 轮廓 例行程序 图式 模式特权 统计数字 桌子 表4.1.1.1约束条件 表4.1.1特权 表11统计数字 触发 用户权限 观点 现在,我必须找到关于这些表的详细信息。例如,主键定义、表列、外键、触发器操作等 然而,我遇到的问题是,这些表中没

我正在做一项作业,我应该在“空白”数据库的信息模式中找到所有的表。我可以在MySQL或PostgreSQL中实现这一点。我选择了MySQL。因此,我确定了所有表格:

  • 字符集
  • 校勘
  • 排序规则\字符\集合\适用性
  • 纵队
  • 列(u)特权
  • 指数统计
  • 键\u列\u用法
  • 轮廓
  • 例行程序
  • 图式
  • 模式特权
  • 统计数字
  • 桌子
  • 表4.1.1.1约束条件
  • 表4.1.1特权
  • 表11统计数字
  • 触发
  • 用户权限
  • 观点
  • 现在,我必须找到关于这些表的详细信息。例如,主键定义、表列、外键、触发器操作等

    然而,我遇到的问题是,这些表中没有列出任何主键、外键或约束等


    我误解了吗?或者这些信息可以在任何地方找到吗?非常感谢您的帮助。

    您是否尝试过命令
    descripe table

    如果有主键,您将看到

    +-------+--------------+------+-----+---------+----------------+
    | Field | Type         | Null | Key | Default | Extra          |
    +-------+--------------+------+-----+---------+----------------+
    | id    | int(11)      | NO   | PRI | NULL    | auto_increment |
    | name  | varchar(128) | NO   |     | NULL    |                |
    +-------+--------------+------+-----+---------+----------------+
    

    您应该查看
    表\u约束

    SELECT `table_name`, `constraint_name`, `constraint_type` 
    FROM `information_schema`.`table_constraints` 
    WHERE `table_schema` = 'yourdbname';
    
    这将获得约束名称和类型。如果您想了解更多详细信息,您需要加入
    key\u column\u 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`;
    

    那么就没有主键了。这不是一个好主意,但它是可能的。