首页/数据/数据库速查/DESCRIBE 与 SHOW COLUMNS 查看列结构

DESCRIBE 与 SHOW COLUMNS 查看列结构

快速查看列名、类型、NULL、键、默认值与额外属性;SHOW FULL COLUMNS 额外带 Collation、权限与注释。

数据库速查数据更新于 2026-10-13

查看表结构的三条路径

DESCRIBE(可缩写为 DESC)与 SHOW COLUMNS 用来快速查看列名、类型、是否允许空值、键类型、默认值与额外属性;SHOW FULL COLUMNS 在此基础上多出排序规则、权限与注释;需要脚本化处理时,直接查 information_schema.columns 最灵活。三条路径信息来源相同,选择取决于你要不要注释与是否需要条件筛选。

基本信息

适用平台MySQL 5.7 / 8.0、MariaDB
常用语法DESCRIBE tbl、SHOW COLUMNS FROM tbl、SHOW FULL COLUMNS FROM tbl
通配筛选SHOW COLUMNS FROM tbl LIKE 'status%'
脚本化查询information_schema.columns
权限要求对该表的任意权限即可

典型使用场景

  • 接手陌生表时快速了解字段构成与键类型
  • 上线前核对建表结果是否与设计文档一致
  • 排查插入失败:确认某列是否允许空值、默认值是什么
  • 按前缀查找字段:确认某个模块用了哪些列
  • 生成文档或代码:从 information_schema 批量导出列元数据

常用示例

常用示例
DESCRIBE orders;
SHOW FULL COLUMNS FROM orders;                -- 带注释与排序规则
SHOW COLUMNS FROM orders LIKE 'status%';      -- 只看前缀匹配的列
-- 精确查询列元数据,便于脚本处理
SELECT column_name, column_type, is_nullable, column_key, column_default, extra, column_comment
FROM information_schema.columns
WHERE table_schema = 'appdb' AND table_name = 'orders'
ORDER BY ordinal_position;

输出逐列读法

字段含义关注点
Field列名与文档核对命名
Type数据类型与长度长度不足会导致截断或报错
Null是否允许 NULLNOT NULL 且无默认值时插入必须给值
Key是否为索引列(PRI/UNI/MUL)PRI 表示主键,MUL 表示普通索引
Default默认值无默认值时插入省略该列会失败
Extra额外属性含 auto_increment 或生成列表达式
Collation字符集排序规则(需 FULL)跨表关联字符集不一致会影响索引
Comment列注释(需 FULL)业务含义的补充说明
普通 DESC 不显示列注释与排序规则:需要这些信息时使用 SHOW FULL COLUMNS,或直接查 information_schema.columns 的 column_comment 字段。
在 MySQL 8.0 中保留字与关键字变更更严格:列名若与保留字冲突,查结构时需要用反引号包裹,脚本化生成 SQL 时尤其要注意。
核对表结构差异时,把 DESCRIBE 的输出与 information_schema.columns 结合起来用:前者适合人工快速浏览,后者可以加条件筛选与排序,还能直接导出成字段清单,用于环境之间的结构比对与文档生成。

易错点

  • 把 DESC 与 ORDER BY DESC 混在一起理解:一个是查看表结构的命令,一个是排序关键字,阅读他人脚本时容易误判
  • 用 DESC 找索引信息:它只显示单列的键标记,复合索引的列序要用 SHOW INDEX 查看
  • 依赖输出顺序而不加 ordinal_position:information_schema 查询未排序时列顺序不保证
  • 忽略 Extra 列的生成列表达式:写入生成列会直接报错,必须先看清定义

数据来源与参考

  • MySQL 8.0 Reference Manual: SHOW COLUMNS Statement

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌