ALTER TABLE 是修改 MySQL 表结构的核心语句,支持增删改字段、调索引/主键、更名及改引擎;需语法准确、评估数据影响,并提前备份。

修改 MySQL 表结构主要通过 ALTER TABLE 语句实现,它支持添加、删除、修改字段,调整主键/索引,更改表名和存储引擎等操作。关键在于语法准确、注意数据影响,并在生产环境操作前务必备份。
添加字段(ADD COLUMN)
在表末尾或指定位置插入新列:
- 基础写法:
ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 [约束]; - 指定位置:
ADD COLUMN 字段名 INT AFTER 已有字段名;或FIRST放最前 - 示例:
ALTER TABLE users ADD COLUMN phone VARCHAR(20) NOT NULL DEFAULT '';
修改字段定义(MODIFY / CHANGE)
MODIFY 仅改类型和约束,不改名;CHANGE 可同时改名和定义:
- 改类型(不重命名):
ALTER TABLE users MODIFY email VARCHAR(100) NOT NULL; - 改名+改类型:
ALTER TABLE users CHANGE old_name new_name INT UNSIGNED; - 注意:
CHANGE必须写两次字段名,大小写敏感,且会重建字段
删除与重命名字段(DROP / RENAME COLUMN)
MySQL 8.0+ 支持标准 DROP COLUMN 和 RENAME COLUMN:
- 删除字段:
ALTER TABLE users DROP COLUMN temp_flag; - 重命名字段:
ALTER TABLE users RENAME COLUMN old_col TO new_col; - 旧版本(CHANGE 实现重命名(类型保持一致即可)
管理索引与主键
常用操作包括增删主键、唯一索引、普通索引:
- 添加主键:
ALTER TABLE users ADD PRIMARY KEY (id);(要求字段非空且无重复) - 删除主键:
ALTER TABLE users DROP PRIMARY KEY;(若为自增字段,可能需先删 AUTO_INCREMENT) - 建索引:
ALTER TABLE users ADD INDEX idx_name (name); - 删索引:
ALTER TABLE users DROP INDEX idx_name;
操作前建议用 SHOW CREATE TABLE 表名; 查看当前结构,执行后可用 DESC 表名; 验证。大表修改可能锁表或耗时较长,线上环境优先考虑 pt-online-schema-change 等工具。










