MySQL ALTER 语句

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/

截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观

在数据库开发中,表结构的变更是常见操作,而 MySQL 提供的 ALTER 语句正是用于修改表结构的强大工具。通过 ALTER,我们可以轻松地添加、删除或修改表中的列,以及调整表的其他属性。


基本语法

ALTER TABLE 表名 操作;

常见操作

1. 添加列

使用 ADD 关键字向表中添加新列。

示例:添加 email 列到 t_student

ALTER TABLE t_student 
ADD email VARCHAR(255);

2. 删除列

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

示例:删除 email

ALTER TABLE t_student 
DROP COLUMN email;

3. 修改列数据类型

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

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

ALTER TABLE t_student 
MODIFY age TINYINT;

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

ALTER TABLE t_student 
CHANGE age student_age TINYINT;

4. 重命名列

示例:将 student_name 列重命名为 name

ALTER TABLE t_student 
CHANGE student_name name VARCHAR(100);

5. 重命名表

使用 RENAME 关键字重命名表。

示例:将 t_student 表重命名为 t_students

ALTER TABLE t_student 
RENAME TO t_students;

6. 添加主键

使用 ADD PRIMARY KEY 将某列设置为主键。

示例:将 id 列设置为主键

ALTER TABLE t_student 
ADD PRIMARY KEY (id);

7. 删除主键

使用 DROP PRIMARY KEY 删除表中的主键。

示例:删除主键

ALTER TABLE t_student 
DROP PRIMARY KEY;

8. 添加或删除索引

添加索引

ALTER TABLE t_student 
ADD INDEX idx_name (name);

删除索引

ALTER TABLE t_student 
DROP INDEX idx_name;

9. 调整列位置

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

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

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

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

ALTER TABLE t_student 
MODIFY email VARCHAR(255) FIRST;

10. 修改表的默认字符集

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

ALTER TABLE t_student 
CONVERT TO CHARACTER SET utf8mb4;

注意事项

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

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

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


小结

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