重命名MySQL中的一列


241

我正在尝试使用以下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服务器版本相对应的手册


Answers:


404

使用以下查询:

ALTER TABLE tableName CHANGE `oldcolname` `newcolname` datatype(length);

RENAME功能在Oracle数据库中使用。

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

注意用于MySQL的反引号,而双引号用于Oracle的语法。另请注意,MySQL 8.0可能不接受反引号。在这种情况下,不带反引号的情况下执行查询,它可能会起作用。


@ lad2025在下面提到了这一点,但是我认为添加他的发言会很好。谢谢@ lad2025!

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

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE语法

重命名列:

  • 可以更改列名,但不能更改其定义。

  • 重命名列而不更改其定义,比CHANGE更方便。


2
您是否可以使用具有相同名称的列-或为什么必须指定其数据类型?
Lealo

5
@Lealo如命令所示,CHANGE更改表中的列及其类型。MYSQL文档状态:Attributes present in the original definition but not specified for the new definition are not carried forward.。意味着您必须指定表定义,否则它们将不用于该列。如果您只想更改列的数据类型,只需忽略newcolname
Rizky Fakkel,

2
@Flimm你又是对的。Oracle文档;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编辑。我需要咖啡..
Rizky Fakkel

1
谢谢@Smogen!真奇怪 反引号应该是MySQL的默认引号字符。您确定不使用"代替`吗?
Rizky Fakkel

2
在MySQL(MYSQL STATUS显示mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper)中,我得到Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...了查询 ALTER TABLE comment RENAME COLUMN thread_id TO threadId;。我还尝试添加反引号`。我最终使用CHANGE
Reed

60

在服务器版本中:5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;

80
绝对不要使用DROP和ADD。这样您将丢失所有数据
tomazahlin

27

MySQL 5.7参考手册

句法 :

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

例如:对于具有COLUMN customer_namecustomer_streetcustomercity的 Customer TABLE 。

我们要改变customercity TO customer_city

alter table customer change customercity customer_city VARCHAR(225);


4

您可以使用以下代码:

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

2

重命名MySQL中的列名

alter table categories change  type  category_type varchar(255);


1

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

如果表名是Student而列名是Name。然后,如果要将“ 名称”更改为“ First_Name”

ALTER TABLE Student CHANGE Name First_Name varchar(20);

0

对于mysql版本5

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


0

在MySQL中,您的查询应该像

ALTER TABLE table_name change column_1 column_2 Data_Type;

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.