查看mysql表结构的常用方法
在mysql数据库的使用过程中,我们常常需要了解某张表的字段定义、数据类型、约束规则、索引信息等结构相关内容,不同的查看方式适用于不同的场景,下面逐一介绍。

使用DESCRIBE语句查看
DESCRIBE是最常用的查看表结构的方式,语法简洁,返回结果直观,适合快速查看表的字段基本信息。该语句可以简写为DESC。
语法格式如下:
-- 完整写法 DESCRIBE 表名; -- 简写写法 DESC 表名;
例如我们要查看名为user的表结构,执行以下语句:
DESC user;
返回结果包含以下字段:
- Field:字段名称
- Type:字段数据类型
- Null:是否允许为空,YES表示允许,NO表示不允许
- Key:索引类型,PRI表示主键,UNI表示唯一索引,MUL表示普通索引
- Default:字段默认值
- Extra:额外信息,比如自增属性会显示auto_increment
使用SHOW CREATE TABLE语句查看
如果需要查看表的完整创建语句,包括字段定义、存储引擎、字符集、索引定义等全部信息,可以使用SHOW CREATE TABLE语句。
语法格式如下:
SHOW CREATE TABLE 表名;
同样以user表为例,执行语句:
SHOW CREATE TABLE user;
返回结果会有两个字段,一个是Table表示表名,另一个是Create Table就是完整的建表语句,内容格式如下:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL COMMENT '用户名', `age` int(11) DEFAULT NULL COMMENT '年龄', PRIMARY KEY (`id`), UNIQUE KEY `idx_username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表'
这种方式可以获取到表的全部定义信息,适合需要复现表结构或者查看完整约束规则的场景。
查询information_schema库查看
mysql的information_schema是系统自带的数据库,存储了所有数据库对象的元数据信息,我们可以通过查询其中的表来获取表结构相关的详细信息。
查询字段信息
查询COLUMNS表可以获取指定表的字段详情,语法如下:
SELECT COLUMN_NAME AS '字段名', DATA_TYPE AS '数据类型', IS_NULLABLE AS '是否允许为空', COLUMN_KEY AS '索引类型', COLUMN_DEFAULT AS '默认值', EXTRA AS '额外信息', COLUMN_COMMENT AS '字段注释' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';
例如查询test_db数据库下的user表字段信息:
SELECT COLUMN_NAME AS '字段名', DATA_TYPE AS '数据类型', IS_NULLABLE AS '是否允许为空', COLUMN_KEY AS '索引类型', COLUMN_DEFAULT AS '默认值', EXTRA AS '额外信息', COLUMN_COMMENT AS '字段注释' FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'test_db' AND TABLE_NAME = 'user';
查询索引信息
如果需要单独查看表的索引结构,可以查询STATISTICS表:
SELECT INDEX_NAME AS '索引名', COLUMN_NAME AS '索引字段', NON_UNIQUE AS '是否唯一索引' FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';
不同方法的适用场景
| 查看方式 | 适用场景 | 返回信息完整度 |
|---|---|---|
| DESCRIBE/DESC | 快速查看字段基础信息,不需要完整建表语句 | 中等,仅包含字段基础属性 |
| SHOW CREATE TABLE | 需要获取完整建表语句,复现表结构或查看存储引擎、字符集等配置 | 最高,包含所有表定义信息 |
| information_schema查询 | 需要自定义筛选字段,或者批量获取多张表的结构信息 | 可自定义,根据查询字段决定 |
注意事项
- 执行以上语句需要有对应表的查询权限,否则会返回权限错误
- 使用DESCRIBE语句时,表名如果包含特殊字符或者是mysql关键字,需要用反引号包裹,例如
DESCRIBE `order`; - 查询information_schema时,TABLE_SCHEMA需要填写正确的数据库名,否则可能查询不到对应表的信息
mysql表结构DESCRIBESHOW CREATE TABLEinformation_schema修改时间:2026-07-19 10:24:13