在 MySQL 中查看建表语句,最直接、最常用的方法就是使用
SHOW CREATE TABLE命令。它能完整还原建表时使用的 SQL 语句(包括字段定义、索引、字符集、存储引擎等),是排查结构问题、迁移表结构或备份 DDL 的必备操作。
基本语法与执行方式
只需一条简单命令即可获取建表语句:
SHOW CREATE TABLE 表名;—— 最常用,适用于当前默认数据库中的表
SHOW CREATE TABLE 数据库名.表名;—— 显式指定数据库,避免跨库混淆
注意:表名要区分大小写(取决于系统变量
lower_case_table_names和文件系统),建议用反引号包裹,如
`user_info`,尤其当表名含特殊字符或关键字时。
结果字段说明
执行后返回两列:Table(表名)和Create Table(建表语句)。后者是重点,内容包含:
完整的CREATE TABLE语句 字段名、类型、是否允许 NULL、默认值(
DEFAULT)、自增(
AUTO_INCREMENT)等 主键、唯一索引、普通索引的定义(
PRIMARY KEY,
UNIQUE KEY,
KEY) 表级选项:引擎(
ENGINE=InnoDB)、字符集(
DEFAULT CHARSET=utf8mb4)、排序规则(
COLLATE=utf8mb4_0900_ai_ci)等
常见注意事项
这条命令看似简单,但有几个细节容易踩坑:
用户必须对目标表有SELECT权限(MySQL 8.0+ 要求
SELECT或
SHOW VIEW) 输出的建表语句中,
AUTO_INCREMENT值显示的是当前下一个将分配的 ID,不是最大已用值 如果表使用了分区(PARTITION),语句中会包含完整分区定义;但若只查子分区,需用
SHOW CREATE TABLE ... PARTITION(MySQL 5.7+ 支持) 部分字段默认值(如函数表达式
CURRENT_TIMESTAMP)会原样显示,但旧版本 MySQL 可能不支持直接复用该语句建表,需检查兼容性
替代方案与补充技巧
除了
SHOW CREATE TABLE,还有几种辅助方式:
DESCRIBE 表名;或
DESC 表名;—— 快速看字段名、类型、是否为空、键类型,但不显示索引详情和建表参数
SHOW CREATE DATABASE 数据库名;—— 查看数据库默认字符集和创建语句(与表无关,但常一起使用) 查询
INFORMATION_SCHEMA:如
SELECT CREATE_TABLE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='db_name' AND TABLE_NAME='tb_name';—— 更适合程序化读取,但结果可能被截断(
CREATE_TABLE字段为
longtext,一般够用)
实际工作中,推荐优先用
SHOW CREATE TABLE,清晰、完整、可靠。
