在MySQL数据库的日常使用中,查看表的约束信息是验证表结构设计、排查数据异常的重要步骤,不同的显示表命令所能呈现的约束内容存在明显区别,需要结合具体需求选择合适的命令。

常用显示表命令的约束查看能力
SHOW CREATE TABLE 命令
这是查看表完整定义最常用的命令,能够展示表创建时的所有约束信息,包括主键、外键、唯一约束、非空约束、默认值约束以及检查约束等。执行该命令后,输出的建表语句中会完整保留所有约束的定义逻辑。
示例代码如下:
-- 查看test_table表的创建语句,包含全部约束定义 SHOW CREATE TABLE test_table;
假设test_table的建表语句包含主键id、唯一约束username、外键关联user_role表的role_id,那么输出结果中会完整显示这些约束的定义片段,比如PRIMARY KEY (id)、UNIQUE KEY uk_username (username)、CONSTRAINT fk_role FOREIGN KEY (role_id) REFERENCES user_role (id)等内容。
SHOW TABLE STATUS 命令
该命令主要用于查看表的状态信息,比如存储引擎、行数、数据长度等,不会直接展示具体的约束内容,仅能通过输出的Comment字段查看表的备注信息,无法直接获取约束相关的定义。
示例代码如下:
-- 查看test_table表的状态信息 SHOW TABLE STATUS LIKE 'test_table';
DESCRIBE/DESC 命令
该命令用于查看表的字段结构,能够展示部分基础约束信息,比如字段是否允许为空(Null列)、是否为主键(Key列)、默认值(Default列)、扩展信息(Extra列)。但无法展示外键、唯一约束、检查约束的完整定义,只能看到主键对应的字段标记。
示例代码如下:
-- 查看test_table表的字段结构 DESC test_table;
通过系统表查询完整约束信息
如果需要更结构化地获取所有约束信息,或者需要批量查询多个表的约束,可以查询information_schema数据库下的系统表,其中KEY_COLUMN_USAGE表可以获取主键、唯一约束、外键的字段信息,CHECK_CONSTRAINTS表可以获取检查约束的定义。
查询表所有约束的示例代码如下:
-- 查询test_table表的所有约束信息
SELECT
CONSTRAINT_NAME, -- 约束名称
CONSTRAINT_TYPE, -- 约束类型
COLUMN_NAME -- 约束对应的字段名
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_SCHEMA = 'your_database_name' -- 替换为你的数据库名
AND TABLE_NAME = 'test_table'
UNION ALL
SELECT
CONSTRAINT_NAME,
'CHECK' AS CONSTRAINT_TYPE,
CHECK_CLAUSE AS COLUMN_NAME
FROM information_schema.CHECK_CONSTRAINTS
WHERE TABLE_SCHEMA = 'your_database_name'
AND TABLE_NAME = 'test_table';
不同命令的适用场景对比
为了更清晰地选择查询方式,以下是不同命令的适用场景对比:
| 命令类型 | 可查看的约束类型 | 适用场景 |
|---|---|---|
| SHOW CREATE TABLE | 主键、外键、唯一约束、非空、默认值、检查约束 | 需要查看表完整约束定义,或者需要复制建表语句的场景 |
| DESC/DESCRIBE | 主键、非空、默认值 | 快速查看表字段基础属性,不需要完整约束定义的场景 |
| information_schema查询 | 所有约束类型 | 需要批量查询约束、结构化处理约束信息的场景 |
注意事项
- 使用SHOW CREATE TABLE时,如果表有外键约束,需要确保关联表存在,否则可能无法正常显示外键定义。
- 查询information_schema系统表时,需要替换对应的数据库名和表名,避免查询到无关数据。
- MySQL 8.0及以上版本才完整支持检查约束的查询,低版本可能无法通过系统表获取检查约束信息。
MySQL显示表命令表约束information_schemaSHOW命令修改时间:2026-07-23 00:06:35