ALTER table用于修改表结构,可添加列(ADD column)、删除列(DROP COLUMN)、修改列定义(MODIFY COLUMN)、重命名并修改列(CHANGE COLUMN)。2. 可添加普通索引(ADD INDEX)或唯一索引(ADD UNIQUE),删除索引使用DROP INDEX,主键需用DROP PRIMARY KEY。3. 通过RENAME TO重命名表,修改存储引擎用ENGINE =,转换字符集用CONVERT TO CHARACTER SET。4. 操作影响大,建议低峰期进行,提前备份并在测试环境验证。

在 mysql 中,ALTER TABLE 是用于修改已有表结构的强大命令。你可以用它来添加、删除或修改字段,调整索引,更改数据类型,重命名表等。下面介绍常见用法和具体语法。
添加列(ADD COLUMN)
如果你想在已存在的表中增加一个新字段,使用 ADD COLUMN。
例如:给 users 表添加一个 age 字段
ALTER TABLE users ADD COLUMN age int AFTER name;
AFTER name 表示将字段插入到 name 字段之后。也可以使用 FIRST 将字段放在第一列。
删除列(DROP COLUMN)
如果某个字段不再需要,可以将其删除。
例如:删除 users 表中的 age 字段
ALTER TABLE users DROP COLUMN age;
注意:删除字段会同时删除其中的数据,请谨慎操作。
修改列定义(MODIFY COLUMN)
用于更改字段的数据类型、长度、是否允许 NULL 等属性。
例如:将 email 字段的长度改为 100,并设置为非空
ALTER TABLE users MODIFY COLUMN email VARCHAR(100) NOT NULL;
MODIFY COLUMN 必须完整写出字段的新定义。
重命名并修改列(CHANGE COLUMN)
如果你想更改字段名,同时修改其类型,使用 CHANGE COLUMN。
例如:将 age 字段重命名为 user_age,并改为 SMALLINT 类型
ALTER TABLE users CHANGE COLUMN age user_age SMALLINT;
如果只是重命名而不改类型,也要写上原类型。
添加索引
可以在指定字段上添加索引以提高查询效率。
例如:为 email 字段添加普通索引
ALTER TABLE users ADD INDEX idx_email (email);
添加唯一索引:
ALTER TABLE users ADD UNIQUE uk_username (username);
删除索引
删除不再需要的索引。
ALTER TABLE users DROP INDEX idx_email;
主键索引需使用 DROP PRIMARY KEY。
重命名表
使用 RENAME TO 修改表名。
例如:将 users 表重命名为 user_info
ALTER TABLE users RENAME TO user_info;
调整存储引擎或字符集
可以修改表的存储引擎或默认字符集。
例如:将表引擎改为 InnoDB
ALTER TABLE users ENGINE = InnoDB;
修改字符集:
ALTER TABLE users CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
基本上就这些常用操作。ALTER TABLE 功能强大,但修改表结构可能影响应用运行,建议在低峰期操作,并提前备份数据。执行前可在测试环境验证语句正确性。


