查看表结构的三条路径
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 | 是否允许 NULL | NOT 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 结合起来用:前者适合人工快速浏览,后者可以加条件筛选与排序,还能直接导出成字段清单,用于环境之间的结构比对与文档生成。