MySQL查看表结构

MySQL查看表结构

引言

接手老库、写SQL、加字段前,先看清表里有哪些列、类型、主键、索引和默认值。DESC看字段概览,SHOW CREATE TABLE拿到完整建表语句,information_schema可批量查元数据。

DESC看字段概览

DESC users;
-- 等价
DESCRIBE users;

输出Field、Type、Null、Key、Default、Extra六列,快速看字段类型和是否主键。

完整建表语句

SHOW CREATE TABLE users;

拿到原始CREATE TABLE,包含引擎、字符集、索引、外键、注释,迁移和备份最有用。

查看表索引

SHOW INDEX FROM users;

看有哪些索引、唯一性、列顺序,分析慢查询时用。

查表状态和引擎

SHOW TABLE STATUS LIKE 'users';

看引擎、行数、行格式、数据和索引大小、自增值。

information_schema批量查

SELECT COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='dbname' AND TABLE_NAME='users';

程序里动态读表结构、批量比对字段时用。

注意事项

  • DESC不显示完整索引和外键,要看SHOW CREATE TABLE;
  • 大表SHOW TABLE STATUS的行数是估算值,非精确;
  • 看字段注释用information_schema的COLUMN_COMMENT;
  • 修改结构前先SHOW CREATE TABLE留底;
  • 区分NULL和默认空串,Default列直接体现;
  • 自增字段在Extra列显示auto_increment。

总结

日常DESC快速看字段,要完整定义用SHOW CREATE TABLE,查索引用SHOW INDEX,看容量引擎用SHOW TABLE STATUS,脚本批量取元数据查information_schema。改结构前先把建表语句留底,避免误删索引或默认值。


emer 发布于  2026-10-19 07:34 

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 
'); })();