重命名MySQL中的列

Mic*_*ter 202 mysql sql

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

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
Run Code Online (Sandbox Code Playgroud)

我也试过了

ALTER TABLE table_name RENAME old_col_name TO new_col_name;
Run Code Online (Sandbox Code Playgroud)

但它说:

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

Riz*_*kel 323

使用以下查询:

ALTER TABLE tableName CHANGE `oldcolname` `newcolname` datatype(length);
Run Code Online (Sandbox Code Playgroud)

RENAME函数用于Oracle数据库.

ALTER TABLE tableName RENAME COLUMN "oldcolname" TO "newcolname" datatype(length);
Run Code Online (Sandbox Code Playgroud)

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


@ lad2025在下面提到它,但我认为添加他说的话会很好.谢谢@ lad2025!

您可以使用RENAME COLUMNMySQL 8.0中的命名重命名任何需要重命名的列.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
Run Code Online (Sandbox Code Playgroud)

ALTER TABLE语法:

RENAME COLUMN:

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

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

  • @Lealo正如命令所说,`CHANGE`更改了表及其类型的列.MYSQL文档声明:`原始定义中存在但未为新定义指定的属性不会继续使用.这意味着您必须指定表定义,否则它们将不会用于该列.如果您只想更改列的数据类型,只需省略`newcolname` (5认同)
  • 双引号导致语法错误 (4认同)
  • 你能有同名的列吗 - 或者为什么必须指定它的数据类型? (2认同)
  • @Flimm你又回来了.Oracle文档; `在MySQL中,引号字符是反引号.如果设置了SQL模式ANSI_QUOTES,则双引号也可用于引用标识符.在Oracle中,标识符使用双引号引用.Aaaand已编辑.我需要咖啡.. (2认同)
  • 在MySQL中(对于使用EditLine包装器的Linux(x86_64),MYSQL STATUS显示MySQL版本14.14 Distrib 5.7.27),我收到错误1064(42000):SQL语法有错误; ...接近查询'ALTER TABLE注释RENAME COLUMN thread_id TO threadId;'的'COLUMN thread_id TO threadId'...。我还尝试添加反引号`\``。我最终使用了“ CHANGE”。 (2认同)
  • 只是一个快速提醒 - 您需要包含整个“列定义”,而不仅仅是“数据类型(长度)”([ALTER TABLE 的文档](https://dev.mysql.com/doc/refman/5.7/ en/alter-table.html))。 (2认同)

Kan*_*nke 55

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

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Run Code Online (Sandbox Code Playgroud)

  • 绝对不要使用DROP和ADD.这样做会丢失所有数据 (75认同)
  • 这个答案并没有给已接受的答案增加太多价值。 (2认同)

Ash*_*coN 23

来自MySQL 5.7参考手册

句法

ALTER TABLE t1 CHANGE ab DATATYPE;

例如:对于具有COLUMN customer_name,customer_street,customercity的 Customer TABLE

我们要改变customercity TO customer_city

alter table customer change customercity customer_city VARCHAR(225);
Run Code Online (Sandbox Code Playgroud)


Luk*_*zda 14

从MySQL 8.0你可以使用

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;
Run Code Online (Sandbox Code Playgroud)

ALTER TABLE语法:

RENAME COLUMN:

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

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

DBFiddle演示


小智 11

ALTER TABLE `table_name` CHANGE `$old_column_name` `new_column_name` VARCHAR(40)
Run Code Online (Sandbox Code Playgroud)

这对我有用


小智 6

您可以使用以下代码:

ALTER TABLE `dbName`.`tableName` CHANGE COLUMN `old_columnName` `new_columnName` VARCHAR(45) NULL DEFAULT NULL ;
Run Code Online (Sandbox Code Playgroud)