KEY_COLUMN_USAGE
KEY_COLUMN_USAGE表描述哪些键列具有约束。
KEY_COLUMN_USAGE表有以下列:
CONSTRAINT_CATALOG :约束所属目录的名称。 该值始终为def。
CONSTRAINT_SCHEMA :约束所属schema(database)名称
CONSTRAINT_NAME :约束名称
TABLE_CATALOG :表所属目录的名称。 该值始终为def。
TABLE_SCHEMA :表所属schema(database)名称
TABLE_NAME :具有约束的表的名称
COLUMN_NAME :具有约束的列的名称。
如果约束是外键,则这是外键的列,而不是外键引用的列。
ORDINAL_POSITION :列在约束内的位置,而不是列在表中的位置。列位置从1开始编号。
POSITION_IN_UNIQUE_CONSTRAINT:NULL对于唯一和主键约束。对于外键约束,此列是正在引用的表的键中的序号位置。
REFERENCED_TABLE_SCHEMA :约束引用的schema(数据库)的名称。
REFERENCED_TABLE_NAME :约束引用的表的名称。
REFERENCED_COLUMN_NAME :约束引用的列的名称。
————————————————
假设有两个表名t1, t3并且具有以下定义:
CREATE TABLE t1 ( s1 INT, s2 INT, s3 INT, PRIMARY KEY(s3) ) ENGINE=InnoDB; CREATE TABLE t3 ( s1 INT, s2 INT, s3 INT, KEY(s1), CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3) ) ENGINE=InnoDB;复制
对于以上两张表, KEY_COLUMN_USAGE表有以下记录:
mysql> select * from information_schema.KEY_COLUMN_USAGE where CONSTRAINT_SCHEMA='test'; +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+ | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT | REFERENCED_TABLE_SCHEMA | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+ | def | test | PRIMARY | def | test | t1 | s3 | 1 | NULL | NULL | NULL | NULL | | def | test | CO | def | test | t3 | s2 | 1 | 1 | test | t1 | s3 | +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+ 2 rows in set (0.02 sec)复制
也可以这样查询表上的约束
mysql> SELECT table_name, referenced_table_schema,referenced_table_name, CONSTRAINT_NAME, GROUP_CONCAT(column_name ORDER BY ORDINAL_POSITION) AS 'Columns' FROM information_schema.KEY_COLUMN_USAGE WHERE constraint_schema = 'test' AND REFERENCED_TABLE_NAME is not null group by table_name, referenced_table_schema,referenced_table_name, CONSTRAINT_NAME ORDER BY TABLE_NAME; +------------+-------------------------+-----------------------+-----------------+---------+ | table_name | referenced_table_schema | referenced_table_name | CONSTRAINT_NAME | Columns | +------------+-------------------------+-----------------------+-----------------+---------+ | t3 | test | t1 | CO | s2 | +------------+-------------------------+-----------------------+-----------------+---------+ 1 row in set (0.01 sec)复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
MySQL8.0统计信息总结
闫建(Rock Yan)
554次阅读
2025-03-17 16:04:03
MySQL生产实战优化(利用Index skip scan优化性能提升257倍)
chengang
374次阅读
2025-03-17 10:36:40
MySQL数据库当前和历史事务分析
听见风的声音
349次阅读
2025-04-01 08:47:17
墨天轮个人数说知识点合集
JiekeXu
328次阅读
2025-04-01 15:56:03
MySQL 生产实践-Update 二级索引导致的性能问题排查
chengang
319次阅读
2025-03-28 16:28:31
MySQL8.0直方图功能简介
Rock Yan
260次阅读
2025-03-21 15:30:53
MySQL 有没有类似 Oracle 的索引监控功能?
JiekeXu
242次阅读
2025-03-19 23:43:22
云和恩墨杨明翰:安全生产系列之MySQL高危操作
墨天轮编辑部
238次阅读
2025-03-27 16:45:26
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
226次阅读
2025-04-07 12:14:29
MySQL 导出文件报错不用愁,两种方案轻松搞定
飞天
201次阅读
2025-03-21 23:55:59