如何给字段重命名_mysql change column用法

来源:这里教程网 时间:2026-02-28 20:39:49 作者:

在 MySQL 中给字段重命名,最标准、最常用的方法是使用

ALTER TABLE ... CHANGE COLUMN
语句。它不仅能改列名,还能同时修改数据类型和约束(如 NOT NULL、DEFAULT 等),但要注意:即使只改名字,也必须**完整写出新列名和原列的数据类型**,否则会报错或意外修改类型。

基本语法与关键要点

CHANGE COLUMN
的核心格式是:

ALTER TABLE 表名 CHANGE COLUMN 原列名 新列名 数据类型 [约束选项];

注意三点:

必须显式写明新列的数据类型,哪怕和原来完全一样(比如原来是
VARCHAR(50)
,重命名时还得再写一遍)
列名区分大小写取决于操作系统(Linux 下敏感,Windows/macOS 一般不敏感),但建议统一小写避免混淆 如果原列有默认值、注释、自增、主键/外键等属性,需要一并写在语句末尾,否则这些属性会被清空

只改列名,其他保持不变(推荐做法)

先用

SHOW CREATE TABLE 表名;
查看原列的完整定义,再照抄类型和约束:

-- 假设原列是:`user_name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名'

重命名为

username

ALTER TABLE users CHANGE COLUMN user_name username VARCHAR(100) NOT NULL DEFAULT '' COMMENT '用户名';

这样能确保所有属性(NOT NULL、DEFAULT、COMMENT)全部保留。

顺便修改类型或约束(一步到位)

如果想在重命名的同时调整字段长度或加 NOT NULL,直接在语句中更新即可:

ALTER TABLE users CHANGE COLUMN username login_id VARCHAR(255) NOT NULL;

这个操作把列名从

username
改为
login_id
,同时把长度扩大到 255 并强制非空。

⚠️ 注意:如果原列允许 NULL,而你新加了

NOT NULL
,且表中已有 NULL 值,MySQL 会报错。需先更新数据,再执行 CHANGE。

和 RENAME COLUMN 的区别(MySQL 8.0+)

MySQL 8.0.4 起支持更轻量的

RENAME COLUMN

ALTER TABLE users RENAME COLUMN username TO login_id;

它的优势是:不需重复写数据类型,也不影响原有约束(自动继承),语法更简洁。但它**不能修改类型或约束**,仅用于纯重命名。如果版本够新且只需改名,优先用这个。

相关推荐