MySQL查看表结构,desc和show create table

前言

接手别人的项目,不知道表有哪些字段、什么类型、有没有索引,全靠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 协助处理


emer 发布于  2026-10-8 07:40