
在MySQL中,ALTER TABLE 语句用于修改已存在表的结构。你可以通过它添加、删除或修改字段,调整字段类型,增删索引,修改表名等操作。下面详细介绍常用的 ALTER 修改表结构的方法。
添加字段(ADD COLUMN)
使用 ADD COLUMN 可以在表中新增一个字段。默认添加到表的末尾,也可指定位置。
例如:在 user 表中添加 age 字段ALTER TABLE user ADD COLUMN age INT AFTER name;
说明: AFTER name 表示将字段添加在 name 字段之后 若省略 AFTER,则字段加在最后删除字段(DROP COLUMN)
使用 DROP COLUMN 删除不需要的字段。
例如:删除 user 表中的 age 字段ALTER TABLE user DROP COLUMN age;
注意: 删除字段会同时删除该字段的数据和索引,操作不可逆,请谨慎执行修改字段类型或属性(MODIFY COLUMN)
使用 MODIFY COLUMN 可更改字段的数据类型、长度、是否允许 NULL 等,但不更改字段名。
例如:将 user 表中 email 字段长度改为 100ALTER TABLE user MODIFY COLUMN email VARCHAR(100);
常见用途: 扩大 VARCHAR 长度避免截断 修改 TINYINT 为 INT 避免溢出修改字段名和类型(CHANGE COLUMN)
使用 CHANGE COLUMN 可同时修改字段名称和数据类型。
例如:将 user 表中的 phone 改为 mobile,并调整类型ALTER TABLE user CHANGE COLUMN phone mobile VARCHAR(20);
说明: 必须写出原字段名和新字段名 即使只改名字,也要重新指定类型重命名表名(RENAME TO)
使用 RENAME TO 修改表的名称。
例如:将 user 表重命名为 usersALTER TABLE user RENAME TO users;
添加索引
可以在已有表上通过 ALTER 添加主键、唯一索引、普通索引等。
添加主键:ALTER TABLE users ADD PRIMARY KEY(id);
添加唯一索引:ALTER TABLE users ADD UNIQUE uk_email(email);
添加普通索引:ALTER TABLE users ADD INDEX idx_name(name);
删除索引
删除不再需要的索引可提升写入性能。
删除普通索引:ALTER TABLE users DROP INDEX idx_name;
删除主键:ALTER TABLE users DROP PRIMARY KEY;
注意: 删除主键前,确保没有自增属性依赖,否则需先移除 AUTO_INCREMENT基本上就这些常用操作。ALTER 虽强大,但在大表上执行可能锁表或耗时较长,建议在低峰期操作,并提前备份数据。掌握这些语法,能灵活应对多数表结构变更需求。
