首页/数据/数据库速查/ALTER TABLE 修改表结构
本包目录(495 条)
MySQL 基础与连接36 条
SQL 语法52 条
用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条Redis 命令96 条Redis 运维与场景124 条

ALTER TABLE 修改表结构

增删列、改类型、加索引、改表选项;8.0 支持 ALGORITHM=INSTANT 在线加列,但多数变更仍需重建表并影响写入。

数据库速查数据更新于 2026-10-12
用途改结构
操作ADD/MODIFY/CHANGE/DROP COLUMN、ADD/DROP INDEX、RENAME
算法INSTANT / INPLACE / COPY

常用操作

常用操作
ALTER TABLE orders ADD COLUMN channel VARCHAR(32) NOT NULL DEFAULT '' AFTER status;
ALTER TABLE orders MODIFY COLUMN sku VARCHAR(128) NOT NULL;
ALTER TABLE orders ADD INDEX idx_channel_created (channel, created_at);
ALTER TABLE orders RENAME TO orders_v2;

在线加列(8.0)

在线加列(8.0)
ALTER TABLE orders ADD COLUMN memo VARCHAR(255) NULL, ALGORITHM=INSTANT;
大表 DDL 会持 MDL 并可能把复制延迟拖长;生产用 gh-ost / pt-online-schema-change,且在低峰执行。

易错点

  • 改列类型(如缩短 VARCHAR)可能触发表重建 + 数据截断风险,先检查数据是否符合新约束
  • DDL 等 MDL 时若前面有长事务,会被阻塞并连带阻塞后续查询

数据来源与参考

  • MySQL 8.0 Reference Manual: ALTER TABLE Statement

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌