MySQL ALTER 语句(图文教程)
一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 - 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/
截止目前, 星球 内专栏累计输出 72w+ 字,讲解图 3103+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2400+ 小伙伴加入学习 ,欢迎点击围观
在数据库开发中,表结构的变更是常见操作,而 MySQL 提供的 ALTER
语句正是用于修改表结构的强大工具。通过 ALTER
,我们可以轻松地添加、删除或修改表中的列,以及调整表的其他属性。
基本语法
ALTER TABLE 表名 操作;
常见操作
1. 添加列
使用
ADD
关键字向表中添加新列。
示例:添加 email
列到 t_employee
表:
ALTER TABLE t_employee
ADD email VARCHAR(255);
2. 删除列
使用
DROP
关键字从表中删除指定列。
示例:删除 email
列:
ALTER TABLE t_employee
DROP COLUMN email;
3. 修改列数据类型
使用
MODIFY
或CHANGE
关键字修改列的数据类型。
示例 1:修改 email
列的数据类型为 TINYINT
:
ALTER TABLE t_employee
MODIFY email TINYINT;
示例 2:同时修改列名和数据类型
ALTER TABLE t_employee
CHANGE email employee_email TINYINT;
4. 重命名列
示例:将 employee_email
列重命名为 email
ALTER TABLE t_employee
CHANGE employee_email email VARCHAR(255);
5. 重命名表
使用
RENAME
关键字重命名表。
示例:将 t_employee
表重命名为 t_employees
ALTER TABLE t_employee
RENAME TO t_employees;
案例测试完成后,记得执行如下语句,将表名修改回来:
ALTER TABLE t_employees
RENAME TO t_employee;
6. 添加或删除索引
TIP : 索引的作用类似于书籍的目录,使数据库可以快速定位到所需的数据,提升查询速度。具体会在后续《索引》 一章中来学学习,这里只需要了解即可。
添加索引
ALTER TABLE t_employee
ADD INDEX idx_name (name);
删除索引
ALTER TABLE t_employee
DROP INDEX idx_name;
7. 调整列位置
使用
AFTER
或FIRST
关键字调整列的位置。
示例 1:将 email
列移动到 name
列之后:
ALTER TABLE t_employee
MODIFY email VARCHAR(255) AFTER name;
示例 2:将 email
列移动到第一列:
ALTER TABLE t_employee
MODIFY email VARCHAR(255) FIRST;
8. 修改表的默认字符集
示例:将表的字符集更改为 utf8mb4
:
ALTER TABLE t_employee
CONVERT TO CHARACTER SET utf8mb4;
注意事项
-
锁表问题
ALTER TABLE
操作会锁定表结构,因此在高并发环境中应小心操作。 -
列的删除与重命名
删除列或重命名操作可能会导致依赖该列的视图或存储过程失效。 -
操作影响
某些复杂的ALTER TABLE
操作可能需要 MySQL 创建临时表,从而耗费更多资源。
小结
ALTER
是 MySQL 中用于修改表结构的重要命令,其常用功能包括添加或删除列、修改列属性、调整表名或字符集等。在实际使用中,需要注意操作的影响范围和执行效率,特别是在生产环境中,建议在执行之前备份数据。