Renomeie uma coluna no MySQL

242

Estou tentando renomear uma coluna no servidor da comunidade MySQL 5.5.27 usando esta expressão SQL:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Eu também tentei

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Mas diz:

Erro: verifique o manual que corresponde à sua versão do servidor MySQL

Michael Peter
fonte
possível duplicata Como renomear uma coluna de tabela no MySQL
Joel Hinz

Respostas:

405

Use a seguinte consulta:

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

A RENAMEfunção é usada nos bancos de dados Oracle.

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

Observe os backticks usados ​​para o MySQL, enquanto aspas duplas são usadas para a sintaxe do Oracle. Observe também que o MySQL 8.0 pode não aceitar backticks. Nesse caso, execute a consulta sem backticks e provavelmente funcionará.


@ lad2025 menciona isso abaixo, mas achei que seria bom acrescentar o que ele disse. Obrigado @ lad2025!

Você pode usar o RENAME COLUMNno MySQL 8.0 para renomear qualquer coluna que você precise renomear.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Sintaxe ALTER TABLE :

RENOMEAR COLUNA:

  • Pode alterar o nome de uma coluna, mas não sua definição.

  • Mais conveniente que CHANGE para renomear uma coluna sem alterar sua definição.

Rizky Fakkel
fonte
2
Você pode ter colunas com o mesmo nome - ou por que o tipo de dados em que estava precisa ser especificado?
Lealo 16/08/19
5
@Lealo Como o comando diz, CHANGEaltera a coluna em uma tabela e seu tipo. Os docs MYSQL afirmar: Attributes present in the original definition but not specified for the new definition are not carried forward.. Ou seja, você precisa especificar as definições da tabela ou elas não serão usadas para essa coluna. Se você quiser alterar apenas o tipo de dados de uma coluna, deixe de fora onewcolname
Rizky Fakkel 17/17/17
2
@Limlim você está certo novamente. Documentos 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. Eu preciso de café ..
Rizky Fakkel 23/10
1
Obrigado @Smogen! Isso é estranho. Os backticks devem ser o caractere de citação padrão para o MySQL. Tem certeza de que não usou em "vez de `?
Rizky Fakkel 4/18
2
No MySQL ( MYSQL STATUSshows mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), recebo Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...a consulta ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. Eu também tentei adicionar backticks `. Acabei usando CHANGE.
Reed
60

Na versão Server: 5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Kanke
fonte
80
absolutamente não use DROP e ADD. você vai perder todos os dados, fazendo isso
tomazahlin
28

No Manual de Referência do MySQL 5.7 .

Sintaxe:

ALTER TABLE t1 ALTERAR ab DATATYPE;

por exemplo: para Customer TABLE com COLUMN customer_name , customer_street , customercity .

E nós queremos mudar customercity TO customer_city :

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

No MySQL 8.0 você poderia usar

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

Sintaxe ALTER TABLE :

RENOMEAR COLUNA:

  • Pode alterar o nome de uma coluna, mas não sua definição.

  • Mais conveniente que CHANGE para renomear uma coluna sem alterar sua definição.

DBFiddle Demo

Lukasz Szozda
fonte
4

Você pode usar o seguinte código:

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

Renomeie o nome da coluna no mysql

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

Sintaxe: ALTER TABLE table_name CHANGE old_column_name new_column_name tipo de dados;

Se o nome da tabela for Aluno e o nome da coluna for Nome . Então, se você deseja alterar o nome para First_Name

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

para mysql versão 5

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

desconhecido
fonte
0

No mysql, sua consulta deve ser como

ALTER TABLE table_name change column_1 column_2 Data_Type;

você escreveu a consulta no Oracle.

Ish
fonte