在MySQL数据库的日常使用中,修改操作是非常高频的需求,覆盖数据库配置调整、表结构变更、存量数据更新等多个场景,不同的修改需求对应不同的命令语法,下面逐一介绍具体的使用方法。

一、修改数据库相关配置
如果需要修改已有数据库的基础属性,比如字符集、排序规则,可以使用ALTER DATABASE命令,语法格式如下:
-- 修改数据库test_db的字符集为utf8mb4,排序规则为utf8mb4_general_ci ALTER DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
执行该命令需要有对应数据库的管理权限,修改后新创建的表会默认使用新的字符集和排序规则,已存在的表不会自动变更配置。
二、修改表结构
调整表的结构是开发过程中常见的需求,比如新增字段、修改字段类型、删除字段、修改表名等,都可以通过ALTER TABLE命令实现。
1. 新增字段
使用ADD COLUMN子句可以给表新增字段,可指定字段的位置:
-- 给user表新增age字段,类型为INT,默认值为0,放在name字段后面 ALTER TABLE user ADD COLUMN age INT DEFAULT 0 COMMENT '用户年龄' AFTER name;
2. 修改字段
如果需要修改字段的类型、默认值、注释等属性,可以使用MODIFY COLUMN或者CHANGE COLUMN,两者的区别是CHANGE COLUMN可以同时修改字段名:
-- 修改user表的age字段类型为SMALLINT,默认值改为18 ALTER TABLE user MODIFY COLUMN age SMALLINT DEFAULT 18 COMMENT '用户年龄'; -- 把user表的age字段改名为user_age,类型改为INT ALTER TABLE user CHANGE COLUMN age user_age INT DEFAULT 18 COMMENT '用户年龄';
3. 删除字段
删除表中不需要的字段使用DROP COLUMN子句:
-- 删除user表的user_age字段 ALTER TABLE user DROP COLUMN user_age;
4. 修改表名
修改表名可以直接使用ALTER TABLE的重命名子句,也可以使用RENAME TABLE命令:
-- 方式1:使用ALTER TABLE ALTER TABLE user RENAME TO new_user; -- 方式2:使用RENAME TABLE RENAME TABLE new_user TO user_info;
三、修改表中已有数据
更新表中已存在的数据内容需要使用UPDATE命令,语法格式如下:
-- 更新user表中id为1的用户,把年龄改为25,昵称改为张三 UPDATE user SET age = 25, nickname = '张三' WHERE id = 1;
这里需要特别注意WHERE条件的书写,如果没有写WHERE条件,会更新表中所有行的对应字段,造成全表数据误更新,操作前建议先通过SELECT语句确认要更新的数据范围。
四、修改用户权限和密码
如果是要修改MySQL的用户相关配置,比如用户密码、用户的权限,可以使用对应的管理命令:
-- 修改root用户的密码,MySQL 5.7及以上版本适用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password_123'; -- 给用户test_user授予test_db数据库所有表的查询和插入权限 GRANT SELECT, INSERT ON test_db.* TO 'test_user'@'%'; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
五、操作注意事项
- 执行修改表结构的命令前,建议先备份表结构和数据,避免操作失误导致数据丢失。
- 修改生产环境的数据库时,要评估命令执行的时间,大表的字段修改可能会锁表,影响业务正常运行。
- 更新数据时一定要核对WHERE条件,最好先执行查询语句确认影响行数,再执行更新操作。
- 修改用户权限后需要执行
FLUSH PRIVILEGES让权限配置生效。
mysql修改表结构修改数据alter_tableupdate修改时间:2026-06-11 08:33:19