在 MySQL 中修改表字段,主要通过 ALTER TABLE 语句实现,常用操作包括修改字段名、数据类型、约束(如 NOT NULL、DEFAULT)、注释,以及调整字段位置。关键是要理解不同操作对应的语法结构,避免误删数据或引发报错。
修改字段名称和数据类型
使用 CHANGE COLUMN 或 MODIFY COLUMN 可以修改字段定义。区别在于:
– CHANGE COLUMN 必须写两次字段名(原名和新名),适合改名+改类型;
– MODIFY COLUMN 不改名,只改类型、约束等,更简洁。
添加或删除默认值、空值约束
用 ALTER TABLE ... ALTER COLUMN 配合 SET DEFAULT 或 DROP DEFAULT 管理默认值;用 SET NOT NULL 或 DROP NOT NULL 控制空值限制。
设默认值:ALTER TABLE user ALTER COLUMN user_age SET DEFAULT 18; 删默认值:ALTER TABLE user ALTER COLUMN user_age DROP DEFAULT; 设非空:ALTER TABLE user MODIFY COLUMN user_age INT NOT NULL;(MODIFY 需重写完整定义) 允许为空:ALTER TABLE user MODIFY COLUMN user_age INT NULL;修改字段注释(COMMENT)
MySQL 支持为字段添加注释,便于团队理解。修改注释需配合 MODIFY 或 CHANGE,并显式写出当前类型和约束,否则可能被重置。
更新注释(同时保留其他定义):ALTER TABLE user MODIFY COLUMN user_age TINYINT NOT NULL DEFAULT 0 COMMENT '用户年龄,单位岁'; 注释内容要用单引号包裹,长度建议控制在 1024 字符内。调整字段在表中的位置
可通过 FIRST(移到最前)或 AFTER col_name(移到某字段后)来调整顺序,这对可读性和某些 ORM 映射有帮助。
移到最前面:ALTER TABLE user MODIFY COLUMN user_age TINYINT FIRST; 移到指定字段后:ALTER TABLE user MODIFY COLUMN user_age TINYINT AFTER username; 注意:移动字段不会影响数据,但需完整写出字段定义(类型、约束等)。