describe(简写desc)是mysql查看表列定义的快捷语句,返回字段名、类型、null属性、键信息、默认值和额外属性;不显示索引、外键、字符集等元数据。

DESCRIBE 和 DESC 是什么,能查到哪些信息
DESCRIBE(简写为 DESC)是 MySQL 提供的快捷语句,用于快速查看表的列定义。它返回字段名、类型、是否允许 NULL、键信息(如 PRI 表示主键)、默认值和额外属性(如 auto_increment)。
它不显示索引详情、外键约束、字符集或存储引擎等元数据——这些得用 SHOW CREATE TABLE 或查询 INFORMATION_SCHEMA。
实际怎么写,参数和大小写敏感吗
语法非常简单:DESCRIBE table_name; 或 DESC table_name;。表名可带数据库前缀,比如 DESCRIBE mydb.users;。
- 表名区分大小写取决于操作系统:Linux 下敏感,Windows/macOS 默认不敏感
- 不能加引号(
DESC 'users';会报错),但支持反引号转义含特殊字符的表名(DESC `my-table`;) - 不支持通配符或模糊匹配,不能写成
DESC user%;
和 SHOW COLUMNS、EXPLAIN 有什么区别
SHOW COLUMNS FROM table_name; 输出和 DESC 完全一致,本质是同义语句;MySQL 内部把 DESC 当作 SHOW COLUMNS 的别名处理。
Python v2.4版chm格式的中文手册,内容丰富全面,不但是一本手册,你完全可以把她作为一本Python的入门教程,教你如何使用Python解释器、流程控制、数据结构、模板、输入和输出、错误和异常、类和标准库详解等方面的知识技巧。同时后附的手册可以方便你的查询。
EXPLAIN SELECT * FROM table_name; 看的是查询执行计划,不是表结构——新手容易混淆这点。
- 想查字段注释?
DESC不显示COMMENT,得用SHOW FULL COLUMNS FROM table_name; - 想看完整建表语句(含索引、约束、字符集)?必须用
SHOW CREATE TABLE table_name; - 想批量查多个表结构?
DESC不支持,只能逐个执行或查INFORMATION_SCHEMA.COLUMNS
常见错误和容易忽略的细节
执行 DESC 报错 ERROR 1146 (42S02): Table 'xxx' doesn't exist,大概率是当前数据库没选对,或者表名拼错。注意:它不会自动 fallback 到其他库查找。
- 没用
USE db_name;切库,又没写库名前缀 → 查不到表 - 表名含下划线但误写成中划线,或大小写不符(尤其在 Linux 服务器上)
- 权限不足时可能只显示部分字段(如隐藏
Extra列),但通常报错更直接(SELECT command denied) -
DESC对视图也有效,但结果反映的是视图定义的输出列,不是底层基表结构
真正需要结构快照时,别只依赖 DESC —— 它太轻量,也太“表面”。关键字段的注释、生成列表达式、隐形主键、JSON 字段约束这些,它一律不体现。









