MySQL修改表字段类型alter table完整命令 MySQL

前言

建表后字段类型不合适,比如 varchar 长度不够、需要改整数类型、加备注,都要用 ALTER TABLE 修改。直接改大表可能锁表、耗时很长,需要评估影响。本文讲解修改字段类型、长度、新增删除字段、改名、注意锁表的完整命令。

操作步骤

1. 修改字段类型和长度

ALTER TABLE orders MODIFY COLUMN title VARCHAR(255) NOT NULL DEFAULT '';

2. 修改字段名(保留类型)

ALTER TABLE orders CHANGE COLUMN old_name new_name VARCHAR(100);

3. 新增字段

ALTER TABLE orders ADD COLUMN remark VARCHAR(500) NULL AFTER created_at;

4. 删除字段

ALTER TABLE orders DROP COLUMN remark;

5. 修改字段默认值与注释

ALTER TABLE orders MODIFY COLUMN status TINYINT DEFAULT 0 COMMENT '订单状态';

6. 查看修改后的表结构

DESC orders;
SHOW CREATE TABLE orders;

7. 大表建议低峰操作并观察

ALTER TABLE orders, ALGORITHM=INPLACE, LOCK=NONE;

常见坑

  1. MODIFY 会覆盖原有的注释、默认值,需一次性写全。
  2. CHANGE 必须同时给新名和类型,不能只改名。
  3. 大表 ALTER 锁表阻塞写入,业务高峰不要执行。
  4. 缩小字段长度可能截断数据,先评估存量。
  5. 类型转换导致精度丢失,如 decimal 改 int。
  6. 外键关联字段修改要同步检查约束。
  7. 线上大表推荐 pt-online-schema-change 或 gh-ost 在线变更。

总结

ALTER TABLE 的 MODIFY 改类型、CHANGE 改名、ADD/DROP 增删字段。修改前备份、低峰执行,大表用在线变更工具避免锁表。每次改完 DESC 和 SHOW CREATE TABLE 核对,防止默认值、注释丢失。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-11-14 07:17 
'); })();