ChatGPT解决这个技术问题 Extra ChatGPT

重命名 MySQL 中的列

我正在尝试使用此 SQL 表达式重命名 MySQL 社区服务器 5.5.27 中的列:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

我也试过

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

但它说:

错误:检查与您的 MySQL 服务器版本对应的手册


R
Rizky Fakkel

使用以下查询:

ALTER TABLE tableName CHANGE oldcolname newcolname datatype(length);

RENAME 函数用于 Oracle 数据库。

ALTER TABLE tableName RENAME COLUMN oldcolname TO newcolname datatype(length);

@lad2025 在下面提到它,但我认为添加他所说的内容会很好。谢谢@lad2025!

您可以使用 MySQL 8.0 中的 RENAME COLUMN 重命名您需要重命名的任何列。

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE 语法:RENAME COLUMN:可以更改列名,但不能更改其定义。比 CHANGE 更方便地重命名列而不更改其定义。


你可以有同名的列 - 或者为什么必须指定它的数据类型?
@Lealo 正如命令所说, CHANGE 更改表上的列及其类型。 MYSQL 文档状态:Attributes present in the original definition but not specified for the new definition are not carried forward.。这意味着您必须指定表定义,否则它们将不会用于该列。如果您只想更改列的数据类型,只需省略 newcolname
@Flimm 你又是对的。甲骨文文档; In MySQL, the quote character is the backtick. If the SQL mode ANSI_QUOTES is set, double quotes can also be used to quote the identifiers. In Oracle, identifiers are quoted using double quotation marks. Aaaand 已编辑。我需要咖啡..
谢谢@Smogen!这很奇怪。反引号应该是 MySQL 的默认引号字符。您确定您没有使用 " 而不是 `
在 MySQL(MYSQL STATUS 显示 mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper)中,对于查询 ALTER TABLE comment RENAME COLUMN thread_id TO threadId;,我得到 Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...。我还尝试添加反引号 `。我最终使用了 CHANGE
K
Kanke

在服务器版本:5.6.34 MySQL 社区服务器

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;

绝对不要使用 DROP 和 ADD。这样做会丢失所有数据
这个答案不会为接受的答案增加太多价值。
@NoelYap 你为什么会有这种感觉?
只是一个快速提示 - 您需要包含整个“列定义”,而不仅仅是 datatype (docs for ALTER TABLE)。
H
HoldOffHunger

来自 MySQL 5.7 参考 Manual

句法 :

更改表 t1 更改 ab 数据类型;

例如:对于具有 COLUMN customer_name、customer_street、customercity 的客户表。

我们想将 customercity 更改为 customer_city :

alter table customer change customercity customer_city VARCHAR(225);

C
Community

从 MySQL 8.0 你可以使用

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE 语法:RENAME COLUMN:可以更改列名,但不能更改其定义。比 CHANGE 更方便地重命名列而不更改其定义。

DBFiddle Demo


J
Jase

您可以使用以下代码:

ALTER TABLE `dbName`.`tableName` CHANGE COLUMN `old_columnName` `new_columnName` VARCHAR(45) NULL DEFAULT NULL ;

这个答案不会为接受的答案增加太多价值。
R
Rishabh Raj

在 MySQL 中更改名称我们必须使用“ALTER”表命令,后跟“CHANGE”。下面是查询。

ALTER TABLE tablename CHANGE COLUMN oldcolname newcolname datatype;

ALTER TABLE tablename CHANGE oldcolname newcolname datatype;

PS-您可以在查询中添加“COLUMN”字或忽略。它会同样工作。

“重命名”用于 Oracle 数据库。


R
Ravi Ekks
ALTER TABLE `table_name` CHANGE `$old_column_name` `new_column_name` VARCHAR(40)

这对我有用


请添加解释。请参阅how to answer
D
Dinesh Vaitage

重命名mysql中的列名

alter table categories change  type  category_type varchar(255);

这个答案不会为接受的答案增加太多价值。
I
Ish

在 mysql 你的查询应该像

ALTER TABLE table_name change column_1 column_2 Data_Type;

您已经在 Oracle 中编写了查询。


这个答案不会为接受的答案增加太多价值。
m
mohimenul

语法:ALTER TABLE table_name CHANGE old_column_name new_column_name 数据类型;

如果表名是学生,列名是名称。然后,如果您想将 Name 更改为 First_Name

ALTER TABLE Student CHANGE Name First_Name varchar(20);

这个答案不会为接受的答案增加太多价值。
F
FARS
ALTER TABLE table_name CHANGE old_column_name new_column_name columnDataType;

R
Radagast_Brown

https://dev.mysql.com/doc/refman/8.0/en/alter-table.html

对于 MySQL 8

alter table creditReportXml_temp change column applicationID applicantID int(11);

这个答案不会为接受的答案增加太多价值。
C
Community

对于 mysql 版本 5

alter table *table_name* change column *old_column_name* *new_column_name* datatype();


这个答案不会为接受的答案增加太多价值。
A
Ash

使用 ALTER TABLE 命令重命名 MySQL 列

ALTER TABLE 是用于更改 MySQL 表结构的基本命令。您可以使用它来添加或删除列、更改列中的数据类型,甚至重命名整个数据库。我们最关心的功能是如何利用 ALTER TABLE 重命名列。

子句让我们对重命名过程有了额外的控制。 RENAME COLUMN 和 CHANGE 子句都允许更改现有列的名称。不同之处在于 CHANGE 子句也可用于更改列的数据类型。命令很简单,您可以使用最符合您要求的子句。

如何使用重命名列子句 (MySQL 8.0)

重命名列的最简单方法是使用带有 RENAME COLUMN 子句的 ALTER TABLE 命令。此子句从 MySQL 8.0 版开始可用。

让我们来说明它的简单语法。要更改列名,请在 MySQL shell 中输入以下语句:

ALTER TABLE your_table_name RENAME COLUMN original_column_name TO new_column_name;

将 your_table_name、original_column_name 和 new_column_name 与您的表名和列名进行交换。请记住,您不能将列重命名为表中已存在的名称。

注意:对于 ALTER TABLE RENAME COLUMN 命令,单词 COLUMN 是必需的。 ALTER TABLE RENAME 是重命名整个表的现有语法。

RENAME COLUMN 子句只能用于重命名列。如果您需要其他功能,例如更改数据定义或列的位置,则需要改用 CHANGE 子句。

使用 CHANGE 子句重命名 MySQL 列

CHANGE 子句为重命名过程提供了重要的补充。它可用于重命名列并使用相同的命令更改该列的数据类型。

在 MySQL 客户端 shell 中输入以下命令以更改列的名称及其定义:

ALTER TABLE your_table_name CHANGE original_column_name new_col_name data_type;

data_type 元素是必需的,即使您想保留现有的数据类型。

使用其他选项来进一步操作表列。 CHANGE 还允许您使用可选的 FIRST | 将列放置在表中的不同位置。 AFTER column_name 子句。例如:

ALTER TABLE your_table_name CHANGE original_column_name new_col_name y_data_type AFTER column_x;

您已成功更改列名,将数据类型更改为 y_data_type,并将列定位在 column_x 之后。


N
Netwons

对于 MySQL <= 8

ALTER TABLE table_names CHANGE `old_column_name` `new_column_name` varchar(50);

这个答案和我的有什么不同?
我没有得到答案。但我用 (`) 得到了答案
D
Dugini Vijay

在这里发布它有助于其他人忽略它,但是当尝试使用更改列和重命名列功能时,它会给我一个错误。所以我想我会看到当我们继续通过进入表属性重命名列时会生成什么语句。下面是生成的命令。

EXEC DB.sys.sp_rename N'db.tablename.TrackingIDChargeDescription1' , N'ChargeDescription1', 'COLUMN';

我使用并重命名了表中的一堆列。


V
Vedad Herceglija

如果您使用的是 gui SQL SMS

你可以做 db -> Tables -> Table -> columns -> 你想重命名的列

右键单击并重命名