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);

添加 email 列到 t_employee 表添加 email 列到 t_employee 表

2. 删除列

使用 DROP 关键字从表中删除指定列。

示例:删除 email 列:

ALTER TABLE t_employee 
DROP COLUMN email;

3. 修改列数据类型

使用 MODIFYCHANGE 关键字修改列的数据类型。

示例 1:修改 email 列的数据类型为 TINYINT

ALTER TABLE t_employee 
MODIFY email TINYINT;

示例 2:同时修改列名和数据类型

ALTER TABLE t_employee 
CHANGE email employee_email TINYINT;

MySQL 修改列数据类型MySQL 修改列数据类型

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;

MySQL 重命名表MySQL 重命名表

案例测试完成后,记得执行如下语句,将表名修改回来:

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. 调整列位置

使用 AFTERFIRST 关键字调整列的位置。

示例 1:将 email 列移动到 name 列之后:

ALTER TABLE t_employee 
MODIFY email VARCHAR(255) AFTER name;

MySQL 调整列位置MySQL 调整列位置

示例 2:将 email 列移动到第一列:

ALTER TABLE t_employee 
MODIFY email VARCHAR(255) FIRST;

8. 修改表的默认字符集

示例:将表的字符集更改为 utf8mb4

ALTER TABLE t_employee 
CONVERT TO CHARACTER SET utf8mb4;

注意事项

  1. 锁表问题
    ALTER TABLE 操作会锁定表结构,因此在高并发环境中应小心操作。

  2. 列的删除与重命名
    删除列或重命名操作可能会导致依赖该列的视图或存储过程失效。

  3. 操作影响
    某些复杂的 ALTER TABLE 操作可能需要 MySQL 创建临时表,从而耗费更多资源。

小结

ALTER 是 MySQL 中用于修改表结构的重要命令,其常用功能包括添加或删除列、修改列属性、调整表名或字符集等。在实际使用中,需要注意操作的影响范围和执行效率,特别是在生产环境中,建议在执行之前备份数据。