MySQL查看表结构,desc和show create table
时间:2026-10-8 07:40 作者:emer 分类: 无
前言
接手别人的项目,不知道表有哪些字段、什么类型、有没有索引,全靠DESC和SHOW CREATE TABLE。
一、查看表有哪些字段
方法1:DESC(最常用)
DESC users;
或者:
DESCRIBE users;
输出:
| Field | Type | Null | Key | Default | Extra |
|---|---|---|---|---|---|
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | YES | NULL | ||
| age | int(11) | YES | NULL |
每列含义:
- Field:字段名
- Type:字段类型
- Null:能不能为NULL
- Key:有没有索引
- Default:默认值
- Extra:额外属性(自增等)
方法2:SHOW COLUMNS
SHOW COLUMNS FROM users;
和DESC效果一样,写法不同而已。
二、查看建表语句
SHOW CREATE TABLE
SHOW CREATE TABLE users;
输出:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
这个命令能看到:
- 完整的建表SQL
- 所有字段和类型
- 主键、索引
- 表引擎、字符集
- 默认值、自增等
三、查看表状态
SHOW TABLE STATUS LIKE 'users'\G
能看到:
- 表行数
- 数据大小
- 索引大小
- 更新时间
- 引擎类型
- 字符集
四、查看表的所有索引
SHOW INDEX FROM users;
或者:
SHOW KEYS FROM users;
五、查看数据库里所有表
SHOW TABLES;
六、实用组合
查看所有表的表名
SHOW TABLES;
查看某库的表
USE 数据库名;
SHOW TABLES;
或者:
SHOW TABLES FROM 数据库名;
七、从information_schema查
更灵活的方式,从系统表查:
查表的字段信息
SELECT * FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'mydb'
AND TABLE_NAME = 'users';
查表的索引信息
SELECT * FROM information_schema.STATISTICS
WHERE TABLE_SCHEMA = 'mydb'
AND TABLE_NAME = 'users';
常见坑
坑1:DESC看不到索引详细信息
DESC只告诉你Key列是啥,但不知道索引名。
解决: 用 SHOW INDEX FROM 表名;
坑2:SHOW CREATE TABLE输出太长
直接看会换行很乱。
解决: 加 \G 按行显示:
SHOW CREATE TABLE users\G
坑3:不知道当前在哪个库
查的时候报错说表不存在。
解决: 先 SELECT DATABASE(); 看当前库。
坑4:表名大小写问题
Linux下MySQL表名区分大小写,Windows不区分。
解决: 表名小写,开发时注意。
总结
常用命令总结:
| 命令 | 作用 |
|---|---|
DESC 表名 |
看字段列表 |
SHOW CREATE TABLE 表名 |
看完整建表语句 |
SHOW INDEX FROM 表名 |
看索引 |
SHOW TABLES |
看所有表 |
SHOW TABLE STATUS |
看表状态 |
记住: 看表结构首选DESC,要看完整建表语句用SHOW CREATE TABLE。
遇到问题加QQ23979811 协助处理