在MySQL数据库的日常使用中,查询表字段类型是开发和维护过程中非常常见的操作,无论是核对表结构设计、排查数据类型不匹配的报错,还是做数据迁移前的结构校验,都需要准确获取字段的类型信息。MySQL提供了多种不同的方式来实现这个需求,用户可以根据自己的使用习惯和场景选择最合适的方法。

使用DESCRIBE命令查询
DESCRIBE命令是MySQL中最简洁的查询表结构的方式,它会直接返回表中所有字段的基本信息,其中包含字段类型。该命令可以简写为DESC,适合快速查看单张表的字段情况。
基本语法如下:
-- 完整写法 DESCRIBE 数据库名.表名; -- 简写形式 DESC 数据库名.表名; -- 如果已经切换到目标数据库,可省略数据库名 DESC 表名;
执行后会返回包含Field(字段名)、Type(字段类型)、Null(是否允许为空)、Key(索引类型)、Default(默认值)、Extra(额外信息)的结果集,其中Type列就是我们需要的字段类型信息。
示例如下,查询test库下的user表:
DESC test.user;
使用SHOW命令查询
SHOW命令也可以用来查询表字段信息,相比DESCRIBE命令,它的功能更丰富,除了查看字段类型,还可以查看表的创建语句等更多内容。
SHOW COLUMNS方式
SHOW COLUMNS命令的返回结果和DESCRIBE基本一致,同样包含字段类型信息,语法如下:
SHOW COLUMNS FROM 表名 FROM 数据库名; -- 简写形式 SHOW COLUMNS FROM 数据库名.表名;
示例如下:
SHOW COLUMNS FROM test.user;
SHOW CREATE TABLE方式
如果需要查看完整的表创建语句,包括字段类型、字符集、索引等所有定义信息,可以使用SHOW CREATE TABLE命令,返回结果中的Create Table列会展示完整的建表语句,从中可以提取所有字段的类型信息。
SHOW CREATE TABLE 数据库名.表名;
示例如下:
SHOW CREATE TABLE test.user;
查询information_schema系统库
information_schema是MySQL自带的信息数据库,里面存储了所有数据库、表、字段的元数据信息,通过查询这个库的相关表,可以获取更灵活、更结构化的字段类型信息,适合需要批量查询多张表或者做字段信息统计的场景。
核心查询的表是information_schema.COLUMNS,这个表包含了所有表的字段信息,我们需要的字段类型存在COLUMN_TYPE列中。
基本查询语法如下:
SELECT
COLUMN_NAME AS 字段名,
COLUMN_TYPE AS 字段类型,
IS_NULLABLE AS 是否允许为空,
COLUMN_DEFAULT AS 默认值
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = '数据库名' -- 指定数据库
AND TABLE_NAME = '表名'; -- 指定表名
如果需要查询某个数据库下所有表的字段类型,可以去掉TABLE_NAME的条件,示例如下查询test库所有表的字段信息:
SELECT
TABLE_NAME AS 表名,
COLUMN_NAME AS 字段名,
COLUMN_TYPE AS 字段类型
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'test'
ORDER BY TABLE_NAME, ORDINAL_POSITION;
不同方法的适用场景
我们可以根据实际需求选择不同的查询方式:
- 如果只是快速查看单张表的字段类型,优先使用DESCRIBE或者SHOW COLUMNS,操作最简单
- 如果需要查看完整的表定义,包括字符集、存储引擎等信息,使用SHOW CREATE TABLE
- 如果需要批量查询多张表的字段信息,或者需要把字段信息导出做后续处理,使用查询information_schema.COLUMNS的方式,结果更结构化,方便后续操作
注意事项
使用以上命令时需要注意权限问题,查询其他数据库的表结构需要有对应的SELECT权限,否则会返回无权限的错误。另外,information_schema中的数据是实时更新的,修改表结构后再次查询可以获取到最新的字段类型信息。
MySQL表字段类型information_schemaSHOW命令DESCRIBE命令修改时间:2026-07-15 13:36:28