Cambiar el nombre de una columna en MySQL

242

Estoy tratando de cambiar el nombre de una columna en el servidor de la comunidad MySQL 5.5.27 usando esta expresión SQL:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

También intenté

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Pero dice:

Error: consulte el Manual que corresponde a la versión de su servidor MySQL

Michael Peter
fuente

Respuestas:

405

Use la siguiente consulta:

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

La RENAMEfunción se usa en bases de datos Oracle.

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

Observe los backticks utilizados para MySQL, mientras que las comillas dobles se utilizan para la sintaxis de Oracle. También tenga en cuenta que MySQL 8.0 podría no aceptar backticks. En ese caso, ejecute la consulta sin backticks y probablemente funcionará.


@ lad2025 lo menciona a continuación, pero pensé que sería bueno agregar lo que dijo. Gracias @ lad2025!

Puede usar el RENAME COLUMNen MySQL 8.0 para renombrar cualquier columna que necesite renombrar.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTA TABLA Sintaxis :

RENOMBRAR COLUMNA:

  • Puede cambiar el nombre de una columna pero no su definición.

  • Más conveniente que CAMBIAR para cambiar el nombre de una columna sin cambiar su definición.

Rizky Fakkel
fuente
2
¿Puede tener columnas con el mismo nombre, o por qué se debe especificar el tipo de datos?
Lealo
55
@Lealo Como dice el comando, CHANGEcambia la columna en una tabla y su tipo. Los documentos afirman MYSQL: Attributes present in the original definition but not specified for the new definition are not carried forward.. Lo que significa que debe especificar las definiciones de la tabla o no se usarán para esa columna. Si solo desea cambiar el tipo de datos de una columna, simplemente newcolname
omita
2
@Flimm tienes razón otra vez. Documentos de 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 editado. Necesito café ..
Rizky Fakkel
1
Gracias @Smogen! Eso es extraño. Se supone que los backticks son las comillas predeterminadas para MySQL. ¿Estás seguro de que no usaste en "lugar de `?
Rizky Fakkel
2
En MySQL ( MYSQL STATUSmuestra mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), obtengo Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...la consulta ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. También intenté agregar backticks `. Terminé usando CHANGE.
Reed
60

En la versión del servidor: 5.6.34 Servidor de comunidad MySQL

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Kanke
fuente
80
absolutamente no use DROP y ADD. perderá todos los datos al hacer esto
tomazahlin
28

Del manual de referencia MySQL 5.7 .

Sintaxis:

ALTERAR TABLA t1 CAMBIAR ab DATATYPE;

por ejemplo: para la TABLA de Clientes que tiene COLUMNA customer_name , customer_street , customercity .

Y queremos cambiar customercity TO customer_city :

alter table customer change customercity customer_city VARCHAR(225);
Ashu_FalcoN
fuente
18

Desde MySQL 8.0 puedes usar

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTA TABLA Sintaxis :

RENOMBRAR COLUMNA:

  • Puede cambiar el nombre de una columna pero no su definición.

  • Más conveniente que CAMBIAR para cambiar el nombre de una columna sin cambiar su definición.

DBFiddle Demo

Lukasz Szozda
fuente
4

Puedes usar el siguiente código:

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

Cambiar el nombre de la columna en mysql

alter table categories change  type  category_type varchar(255);
Dinesh Vaitage
fuente
1

Sintaxis: ALTER TABLE table_name CHANGE old_column_name new_column_name datatype;

Si el nombre de la tabla es Estudiante y el nombre de la columna es Nombre . Entonces, si usted quiere cambiar nombre a First_Name

ALTER TABLE Student CHANGE Name First_Name varchar(20);
mohimenul
fuente
0

para mysql versión 5

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

desconocido
fuente
0

En mysql tu consulta debería ser como

ALTER TABLE table_name change column_1 column_2 Data_Type;

Usted ha escrito la consulta en Oracle.

Ish
fuente