前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >mysql中information_schema库下的KEY_COLUMN_USAGE表详解

mysql中information_schema库下的KEY_COLUMN_USAGE表详解

作者头像
jack.yang
发布于 2025-04-05 10:35:42
发布于 2025-04-05 10:35:42
7800
代码可运行
举报
运行总次数:0
代码可运行

`information_schema.KEY_COLUMN_USAGE` 表是 MySQL 中的一个元数据表,用于存储关于表的键列信息,包括主键、唯一键以及外键的详细信息。这个表包含了关于哪些列参与了哪些类型的键约束的信息。下面是这个表的详细解释:

表结构

下面是 `information_schema.KEY_COLUMN_USAGE` 表的主要字段及其含义:

| 字段名 | 数据类型 | 描述 | |-----------------------------|--------------------|--------------------------------------------------------------| | CONSTRAINT_CATALOG | varchar(64) | 约束所在数据库的目录名,通常为 `def`。 | | CONSTRAINT_SCHEMA | varchar(64) | 约束所在数据库的名称。 | | CONSTRAINT_NAME | varchar(64) | 约束的名称。 | | TABLE_CATALOG | varchar(64) | 表所在的数据库目录名,通常为 `def`。 | | TABLE_SCHEMA | varchar(64) | 表所在的数据库名称。 | | TABLE_NAME | varchar(64) | 表的名称。 | | COLUMN_NAME | varchar(64) | 列的名称。 | | ORDINAL_POSITION | int UNSIGNED | 列在键中的位置,从1开始计数。 | | POSITION_IN_UNIQUE_CONSTRAINT| int UNSIGNED | 列在唯一约束中的位置,对于非唯一约束为 `NULL`。 | | REFERENCED_TABLE_SCHEMA | varchar(64) | 引用表所在的数据库名称,对于非外键约束为 `NULL`。 | | REFERENCED_TABLE_NAME | varchar(64) | 引用表的名称,对于非外键约束为 `NULL`。 | | REFERENCED_COLUMN_NAME | varchar(64) | 引用表中的列名称,对于非外键约束为 `NULL`。 |

字段说明

- **`CONSTRAINT_CATALOG`**: 约束所在数据库的目录名,通常为 `def`。 - **`CONSTRAINT_SCHEMA`**: 约束所在数据库的名称。 - **`CONSTRAINT_NAME`**: 约束的名称。 - **`TABLE_CATALOG`**: 表所在的数据库目录名,通常为 `def`。 - **`TABLE_SCHEMA`**: 表所在的数据库名称。 - **`TABLE_NAME`**: 表的名称。 - **`COLUMN_NAME`**: 列的名称。 - **`ORDINAL_POSITION`**: 列在键中的位置,从1开始计数。 - **`POSITION_IN_UNIQUE_CONSTRAINT`**: 列在唯一约束中的位置,对于非唯一约束为 `NULL`。 - **`REFERENCED_TABLE_SCHEMA`**: 引用表所在的数据库名称,对于非外键约束为 `NULL`。 - **`REFERENCED_TABLE_NAME`**: 引用表的名称,对于非外键约束为 `NULL`。 - **`REFERENCED_COLUMN_NAME`**: 引用表中的列名称,对于非外键约束为 `NULL`。

示例

以下是一些使用 `information_schema.KEY_COLUMN_USAGE` 表的示例查询:

1. **获取特定数据库中所有表的键列信息**:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name';

2. **获取特定表的所有键列信息**:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';

3. **获取特定表的外键信息**:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND REFERENCED_TABLE_NAME IS NOT NULL;

注意事项

- `information_schema` 是一个只读模式的数据库,不能对其进行修改。 - 查询 `information_schema` 通常不需要锁定表,因此性能影响较小。 - 在查询 `information_schema` 时,确保替换 `'your_database_name'` 和 `'your_table_name'` 为您具体的数据库和表名。

 总结

`information_schema.KEY_COLUMN_USAGE` 表提供了关于表的键列信息,包括主键、唯一键以及外键的详细信息。这些信息对于理解和管理数据库中的约束关系非常有用。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
mysql中information_schema库下的COLUMNS_EXTENSIONS表详解
`information_schema.COLUMNS_EXTENSIONS` 表是 MySQL 8.0.22 及以上版本中引入的一个元数据表,用于存储与表列相关的扩展属性。这些属性主要用于存储引擎级别的信息,例如 InnoDB 存储引擎的列属性。下面是对该表的详细解释:
jack.yang
2025/04/05
820
mysql的information_schema库下COLUMN_STATISTICS表详解
`information_schema.COLUMN_STATISTICS` 表是 MySQL 8.0.16 及更高版本中引入的一个元数据表,用于存储关于表列的统计信息,特别是直方图数据。这些统计信息有助于优化器更准确地估计查询的成本,从而选择更高效的执行计划。
jack.yang
2025/04/05
570
mysql基础知识(2)
登录成功:如果用户名和密码正确无误,命令行工具会显示登录成功,并允许用户进行数据库操作。
恒辉信达
2024/11/18
1170
SQL笔记(2)——MySQL的表操作与索引
查看MySQL数据库中特定表的详细设计信息,可以使用DESCRIBE命令,该命令可以显示出表中所有列的名称、数据类型、默认值、空值约束、键约束等信息。例如:
MinChess
2023/04/22
1.7K0
SQL笔记(2)——MySQL的表操作与索引
MySQL information_schema详解 COLUMN_PRIVILEGES
该表显示一些用户具有的列权限信息,其来源为mysql.columns_priv系统表
bsbforever
2020/08/18
5710
避坑指南!「MySQL高版本数据库(8.0)转存sql文件并导入低版本数据库(5.7)」
为了确保数据库中所有表及其列的字符集和排序规则都正确设置,需要针对每个表和列执行相应的修改操作。这里是一个更详细的步骤指南,包括如何修改表级和列级的字符集和排序规则:
Harry技术
2025/01/13
2290
避坑指南!「MySQL高版本数据库(8.0)转存sql文件并导入低版本数据库(5.7)」
MySQL information_schema详解 KEY_COLUMN_USAGE
https://dev.mysql.com/doc/refman/5.7/en/key-column-usage-table.html
bsbforever
2020/08/18
1.6K0
mysql中information_schema库下的COLUMN_PRIVILEGES表详解
`information_schema.COLUMN_PRIVILEGES` 表是 MySQL 中的一个元数据表,用于存储用户对特定表列的权限信息。这个表包含了关于哪些用户拥有对哪些表列的哪些权限的详细信息。下面是这个表的详细解释:
jack.yang
2025/04/05
820
一个表主键信息采集脚本
查询目前哪些表有主键,可以通过information_schema.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 :约束引用的列的名称。 我们来看看这个表中的记录吧:
AsiaYe
2019/11/06
5040
一个表主键信息采集脚本
Mysql中索引和约束相关
自增 导出创建自增字段的语句 SELECT CONCAT( 'ALTER TABLE `', TABLE_NAME, '` ', 'MODIFY COLUMN `', COLUMN_NAME, '` ', IF(UPPER(DATA_TYPE) = 'INT', REPLACE( SUBSTRING_INDEX( UPPER(COLUMN_TYPE), ')', 1 ), 'INT', 'INTEGER' ), UPPER(COLUMN_TYPE) ), ') UNSIGNED NOT NULL AUTO_
码客说
2020/12/28
7520
mysql的information_schema下的COLUMNS表详解
`information_schema.COLUMNS` 表是 MySQL 中的一个元数据表,用于存储数据库中所有表的列信息。这个表对于查询和管理数据库结构非常有用,可以帮助您了解每个表中的列定义、数据类型、约束等细节。
jack.yang
2025/04/05
740
Server层统计信息字典表 | 全方位认识 information_schema
在上一篇《初相识|全方位认识information_schema》中,我们针对 information_schema 系统库做了一个简单的认识,本期我们将为大家带来系列第二篇《Server层统计信息字典表 | 全方位认识 information_schema》,下面请跟随我们一起开始 sys 系统库的学习之旅吧~
老叶茶馆
2020/11/26
1.3K0
深入解析MySQL 8:事务数据字典的变革
在MySQL 8之前的版本中,元数据分散地存储在多个地方,包括元数据文件、非事务性表和特定于存储引擎的数据字典中。这种分散的存储方式不仅增加了管理的复杂性,还可能导致数据的不一致性。为了解决这些问题,MySQL 8引入了事务数据字典,将元数据集中存储在具有事务功能的InnoDB表中,从而提供了一致性和可靠性的保证。
公众号:码到三十五
2024/03/19
1650
MySQL存储引擎 InnoDB 介绍
InnoDB存储引擎提供了具有提交,回滚,和崩溃恢复能力的事务安全,对比MYISAM 的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。它的特点有如下:
星哥玩云
2022/08/17
1.3K0
MySQL存储引擎 InnoDB 介绍
MySQL约束:主键、非空、唯一、外键 ️
大家好,我是默语,擅长全栈开发、运维和人工智能技术。在这篇博客中,我将详细介绍MySQL中各种约束的使用,包括主键约束、非空约束、唯一约束和外键约束。这些约束是保证数据库完整性和数据一致性的关键。关键词:MySQL约束、主键、非空、唯一、外键、数据库设计。
默 语
2024/11/22
3140
MYSQL 怎么获取DB operation系统中的关键信息(一)
Database management 一定会被问及很多事情,并且自己也得平时也的预先了解一些事情以防止某些可以预防的事情。今天就总结一些常用的query sql,方便应付各种 asking.
AustinDatabases
2020/06/04
1.2K0
【重学 MySQL】六十三、唯一约束的使用
在 MySQL 中,唯一约束(UNIQUE Constraint)用于确保数据库表中的一列或多列的数据在整个表中是唯一的,即不允许有重复的值。唯一约束不仅可以在创建表时定义,也可以在表创建后通过修改表结构来添加。
用户11332765
2024/10/28
1680
【重学 MySQL】六十三、唯一约束的使用
操作数据表
打开数据库    use 数据库 ---- use mydata 查看数据库    show databases 显示当前用户打开的数据库   SELECT DATABASE(); 创建数据表 语法:CREATE TABLE [IF NOT EXISTS] table_name(             column_name data_type             ) 例子:创建student数据表             CREATE TABLE student(              
用户1624346
2018/04/18
8710
介绍一下 information_schema 库
今天给大家介绍一款 Mysql 中附属的数据库,就是 information_schema 数据库,为什么说是附属呢?是因为这个数据库是在安装 Mysql 的同时就会安装到你电脑上。这个数据库里面主要存储了关于数据库里面的各种库、表、列、注释等信息。这个库对我们有什么用呢?有很大用处,尤其是当一个公司没有数据字典的时候,你就可以通过查看这个数据库,然后自己去梳理字典。
张俊红
2019/06/24
1.9K0
MySQL 约束
为了保证数据的完整性,SQL 规范以约束的方式对表数据进行额外的条件限制。从以下四个方面考虑:
恋喵大鲤鱼
2023/10/12
3730
相关推荐
mysql中information_schema库下的COLUMNS_EXTENSIONS表详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验