教你如何在MySQL中修改列名MySQL中修改列的名称

这就是坑。
别信长篇大论。

直接上: ALTER TABLE students CHANGE gender gender_type VARCHAR(1 0);
记住:改列名直接用CHANGE。

mysql怎么修改字段名称

上周有个客人问我,MySQL里改字段名到底该用哪种方法?我给他详细解释了一下。

首先,咱们得知道,MySQL里改字段名有两种方法。
第一种是老方法,用ALTER TABLE ... CHANGE语句。
这个方法比较通用,不管MySQL是什么版本,都能用。
不过,用这个方法改字段名的时候,你还得指定字段的数据类型,哪怕你不想改类型,也得写上。

比如说,你想把users表的username字段改名叫user_name,而且保持原来的VARCHAR(2 5 5 )类型,就得这样写:
sql ALTER TABLE users CHANGE username user_name VARCHAR(2 5 5 );
第二种方法是在MySQL 8 .0及以上版本推荐使用的方法,叫RENAME COLUMN。
这个方法的好处是语法更简洁,不用重复声明数据类型。

举个例子,如果你想将products表的product_id改名叫id,就可以这样写:
sql ALTER TABLE products RENAME COLUMN product_id TO id;
不过,使用这种方法的时候,有几个注意事项得注意。
首先,你得确保没有视图、存储过程或者应用程序代码引用了旧字段名。
如果涉及到外键约束或者主键字段,还得特别小心。

比如,如果你要改主键字段名,得先删除主键约束,然后修改字段名,最后再重新添加主键约束。

sql -
先删除主键约束 ALTER TABLE 表名 DROP PRIMARY KEY;
-
修改字段名 ALTER TABLE 表名 CHANGE old_pk new_pk INT;
-
重新添加主键约束 ALTER TABLE 表名 ADD PRIMARY KEY (new_pk);
在生产环境操作的时候,建议先在测试环境验证,考虑使用事务或者备份数据,尽量在低峰期执行DDL操作。

最后,如果你不确定数据类型,或者担心修改类型会导致数据截断,那最好还是用CHANGE语法。
修改完之后,可以通过SHOW CREATE TABLE表名来验证结果,或者使用DESCRIBE表名查看表结构的变化。

对于大型表,你可能需要使用pt-online-schema-change这样的工具来减少锁表的影响。

两种方法在功能上是等效的,但MySQL 8 .0+环境推荐使用RENAME COLUMN,因为它更简洁,也更不容易出错。
不过,不管用哪种方法,记得更新所有相关应用程序代码和数据库对象依赖。
反正你看着办吧。
我还在想这个问题呢。