Comment déplacer des colonnes dans une table MySQL?

Actuellement, je dispose de la table MySQL suivante: Employees (empID, empName, department);

Je veux changer la table à ce qui suit: Employees (empID, department, empName);

Comment cela peut-il être fait en utilisant les instructions ALTER ?

Remarque: je souhaite modifier uniquement les positions de colonne.

Si empName est une colonne VARCHAR (50):

 ALTER TABLE Employees MODIFY COLUMN empName VARCHAR(50) AFTER department; 

MODIFIER

Selon les commentaires, vous pouvez également faire ceci:

 ALTER TABLE Employees CHANGE COLUMN empName empName VARCHAR(50) AFTER department; 

Notez que la répétition de empName est délibérée. Vous devez indiquer à MySQL que vous souhaitez conserver le même nom de colonne.

Vous devez être conscient que les deux versions de syntaxe sont spécifiques à MySQL. Ils ne fonctionneront pas, par exemple, dans PostgreSQL ou dans de nombreux autres SGBD.

Un autre edit: Comme l’a souligné @Luis Rossi dans un commentaire, vous devez spécifier complètement la définition de colonne modifiée juste avant le modificateur AFTER. Les exemples ci-dessus ne contiennent que VARCHAR(50) , mais si vous avez besoin d’autres caractéristiques (telles que NOT NULL ou une valeur par défaut), vous devez également les inclure. Consultez les documents sur ALTER TABLE pour plus d’informations.

Changer la position de la colonne:

 ALTER TABLE Employees CHANGE empName empName VARCHAR(50) NOT NULL AFTER department; 

Si vous devez le déplacer à la première position, vous devez utiliser le terme FIRST à la fin de la requête ALTER TABLE CHANGE [COLUMN]:

 ALTER TABLE UserOrder CHANGE order_id order_id INT(11) NOT NULL FIRST; 

phpMyAdmin fournit une interface graphique pour cela dans la vue de la structure d’une table. Cochez pour sélectionner la colonne que vous souhaitez déplacer et cliquez sur l’action de modification en bas de la liste des colonnes. Vous pouvez ensuite modifier toutes les propriétés de la colonne et vous trouverez la fonction «déplacer la colonne» à l’extrême droite de l’écran.

Bien sûr, tout cela consiste à construire les requêtes dans la meilleure réponse, mais les fans de l’interface graphique pourraient apprécier l’alternative.

ma version de phpMyAdmin est 4.1.7

J’ai dû l’exécuter pour une colonne introduite dans les dernières étapes d’un produit, sur plus de 10 tables. Donc, a écrit ce script rapide pour générer la commande alter pour toutes les tables ‘pertinentes’.

 SELECT CONCAT("ALTER TABLE `",TABLE_NAME,"` CHANGE COLUMN `",COLUMN_NAME,"` `",COLUMN_NAME,"` BIGINT AFTER `id`;") FROM information_schema.COLUMNS c WHERE TABLE_SCHEMA = '' AND COLUMN_NAME = '' AND TABLE_TYPE = 'BASE TABLE' AND '' IN (SELECT COLUMN_NAME FROM information_schema.COLUMNS c2 WHERE c.TABLE_NAME = c2.TABLE_NAME);