Renommer une colonne dans MySQL

242

J'essaie de renommer une colonne dans le serveur de communauté MySQL 5.5.27 en utilisant cette expression SQL:

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

J'ai aussi essayé

ALTER TABLE table_name RENAME old_col_name TO new_col_name;

Mais ça dit:

Erreur: consultez le manuel qui correspond à la version de votre serveur MySQL

Michael Peter
la source
doublon possible de Comment renommer une colonne de table dans MySQL
Joel Hinz

Réponses:

405

Utilisez la requête suivante:

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

La RENAMEfonction est utilisée dans les bases de données Oracle.

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

Notez les backticks utilisés pour MySQL, tandis que les guillemets doubles sont utilisés pour la syntaxe d'Oracle. Notez également que MySQL 8.0 peut ne pas accepter les backticks. Dans ce cas, exécutez la requête sans backticks et cela fonctionnera probablement.


@ lad2025 le mentionne ci-dessous, mais j'ai pensé qu'il serait bien d'ajouter ce qu'il a dit. Merci @ lad2025!

Vous pouvez utiliser RENAME COLUMNdans MySQL 8.0 pour renommer n'importe quelle colonne que vous devez renommer.

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Syntaxe :

RENOMMER LA COLONNE:

  • Peut changer le nom d'une colonne mais pas sa définition.

  • Plus pratique que CHANGE pour renommer une colonne sans changer sa définition.

Rizky Fakkel
la source
2
Pouvez-vous avoir des colonnes du même nom - ou pourquoi faut-il spécifier le type de données qu'il était?
Lealo
5
@Lealo Comme le dit la commande, CHANGEchange la colonne d'une table et son type. Les documents MYSQL indiquent: Attributes present in the original definition but not specified for the new definition are not carried forward.. Cela signifie que vous devez spécifier les définitions de table ou elles ne seront pas utilisées pour cette colonne. Si vous souhaitez uniquement modifier le type de données d'une colonne, il vous suffit de laisser de côté lenewcolname
Rizky Fakkel
2
@Flimm, vous avez à nouveau raison. Documents 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 édité. J'ai besoin de café ..
Rizky Fakkel
1
Merci @Smogen! C'est étrange. Les backticks sont censés être le caractère de citation par défaut pour MySQL. Êtes-vous sûr de ne pas avoir utilisé à la "place de `?
Rizky Fakkel
2
Dans MySQL ( MYSQL STATUSmontre mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper), je reçois Error 1064 (42000): You have an error in your SQL Syntax;...near 'COLUMN thread_id TO threadId'...pour la requête ALTER TABLE comment RENAME COLUMN thread_id TO threadId;. J'ai également essayé d'ajouter des backticks `. J'ai fini par utiliser CHANGE.
Reed
60

Dans la version serveur: 5.6.34 MySQL Community Server

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name data_type;
Kanke
la source
80
n'utilisez absolument pas DROP et ADD. vous perdrez toutes les données en faisant cela
tomazahlin
28

Depuis le manuel de référence MySQL 5.7 .

Syntaxe:

ALTER TABLE t1 CHANGE ab DATATYPE;

par exemple: pour la clientèle TABLE ayant COLONNE customer_name , customer_street , customercity .

Et nous voulons changer customercity À customer_city :

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

Depuis MySQL 8.0, vous pouvez utiliser

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name;

ALTER TABLE Syntaxe :

RENOMMER LA COLONNE:

  • Peut changer le nom d'une colonne mais pas sa définition.

  • Plus pratique que CHANGE pour renommer une colonne sans changer sa définition.

DBFiddle Demo

Lukasz Szozda
la source
4

Vous pouvez utiliser le code suivant:

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

Renommer le nom de la colonne dans mysql

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

Syntaxe: ALTER TABLE nom_table CHANGE ancien_nom_colonne nouveau_nom_colonne type de données;

Si le nom de la table est Student et le nom de la colonne est Name . Ensuite, si vous voulez changer le nom en First_Name

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

pour mysql version 5

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

inconnue
la source
0

Dans mysql, votre requête devrait être comme

ALTER TABLE table_name change column_1 column_2 Data_Type;

vous avez écrit la requête dans Oracle.

Ish
la source