MySQL修改表字段类型alter table完整命令
时间:2026-11-14 07:17 作者:emer 分类: 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;
常见坑
- MODIFY 会覆盖原有的注释、默认值,需一次性写全。
- CHANGE 必须同时给新名和类型,不能只改名。
- 大表 ALTER 锁表阻塞写入,业务高峰不要执行。
- 缩小字段长度可能截断数据,先评估存量。
- 类型转换导致精度丢失,如 decimal 改 int。
- 外键关联字段修改要同步检查约束。
- 线上大表推荐 pt-online-schema-change 或 gh-ost 在线变更。
总结
ALTER TABLE 的 MODIFY 改类型、CHANGE 改名、ADD/DROP 增删字段。修改前备份、低峰执行,大表用在线变更工具避免锁表。每次改完 DESC 和 SHOW CREATE TABLE 核对,防止默认值、注释丢失。
遇到问题加QQ23979811 协助处理
标签: MySQL alter table 字段类型 修改表