MYSQL – ALTER, DROP, RENOMMER, MODIFIER

⚡ Résumé intelligent

ALTER, DROP, RENAME et MODIFY sont les MySQL Les commandes de modification permettent de restructurer une base de données en cours d'utilisation. Elles ajoutent, suppriment, renomment et redéfinissent des objets tels que des tables et des colonnes sans supprimer les lignes déjà enregistrées.

  • Commande ALTER : La commande ALTER TABLE redéfinit un objet existant, permettant ainsi à un schéma en production d'absorber les nouvelles exigences sans reconstruction.
  • AJOUTER UNE COLONNE : La commande ALTER TABLE ADD COLUMN ajoute un champ, et les lignes existantes conservent toutes les valeurs qu'elles contenaient déjà.
  • 🇧🇷 Commande DROP : DROP supprime définitivement : une base de données, une table ou une seule colonne via ALTER TABLE DROP COLUMN.
  • (I.e. Commande RENAME : La commande RENAME TABLE modifie uniquement le nom d'une table, sans perdre aucune donnée qu'elle contient.
  • CHANGER le mot-clé : La commande CHANGE renomme une colonne et redéfinit son type et ses contraintes en une seule instruction ; les deux noms de colonne sont donc requis.
  • 🧩 MODIFIER Mot-clé : MODIFIER modifie le type et les contraintes tout en conservantping le nom, le choix le plus sûr pour une modification de texte uniquement.
  • 📍 APRÈS Mot-clé : AFTER place une colonne nouvellement ajoutée à une position choisie au lieu de la fin du tableau.

MySQL ALTER, SUPPRIMER, RENOMMER et MODIFIER

Qu'est-ce que la commande ALTER ? MySQL?

Le ALTER Cette commande permet de modifier une base de données, une table, une vue ou tout autre objet de base de données existant qui doit être modifié au cours du cycle de vie de la base de données. C'est la commande qui permet à un schéma d'évoluer après sa création et son remplissage avec des données.

Les besoins métiers évoluent constamment, et la conception d'une base de données doit s'adapter. Imaginons que la base de données Myflix soit déjà implémentée et utilisée par les utilisateurs, et que l'équipe réalise alors seulement qu'il manque des informations essentielles. Personne ne souhaite perdre les données existantes ; il suffit d'y ajouter les nouvelles informations.

La commande ALTER permet précisément de gérer ce type de situation. Elle peut modifier le type de données d'un champ (de chaîne de caractères à nombre), renommer un champ ou ajouter une nouvelle colonne à une table, tout en préservant l'intégrité des données déjà stockées.

Une fois l'objectif de la commande établi, l'étape suivante consiste à définir la syntaxe qui permet de l'exécuter.

MySQL Syntaxe ALTER

La syntaxe de base utilisée pour ajouter une colonne à une table existante est présentée ci-dessous.

ALTER TABLE `table_name` ADD COLUMN `column_name` `data_type`;

ICI. (en anglais seulement)

  • "ALTER TABLE `nom_table`" est la commande qui dit MySQL serveur pour modifier la table nommée `table_name`.
  • "AJOUTER UNE COLONNE `nom_colonne` `type_données`" est la commande qui dit MySQL serveur pour ajouter une nouvelle colonne nommée `column_name` avec le type de données `data_type`.

Supposons que Myflix ait mis en place la facturation et les paiements en ligne. Pour ce faire, un champ pour le numéro de carte bancaire doit être ajouté à la table des membres. Avant toute modification, il est conseillé d'examiner la structure actuelle de la table. Le script ci-dessous permet de le faire.

SHOW COLUMNS FROM `members`;
Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
noms complets varchar (350) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL

💡 Remarque sur int(11) : Le nombre entre parenthèses correspond uniquement à la largeur d'affichage. MySQL La version 8.0.17 l'a dépréciée pour les types entiers ; un serveur moderne affiche donc cette colonne simplement comme intLa capacité de stockage reste inchangée.

Le script ci-dessous ajoute le nouveau champ à la table des membres.

ALTER TABLE `members` ADD COLUMN `credit_card_number` VARCHAR(25);

L'exécution de ce script sur la base de données myflixdb ajoute une colonne nommée credit_card_number à la table members, de type VARCHAR. L'exécution de la commande SHOW COLUMNS donne le résultat suivant.

Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
noms complets varchar (350) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL
Numéro de Carte de Crédit varchar (25) OUI NULL

La ligne mise en évidence confirme que le numéro de carte de crédit a été ajouté à la table des membres, et que les données déjà contenues dans les autres colonnes ne sont pas affectées par cet ajout.

L'ajout d'une colonne ne représente que la moitié du travail. Un schéma doit également supprimer les objets dont il n'a plus besoin ; c'est le rôle de la commande DROP.

Qu'est-ce que la commande DROP dans MySQL?

La commande DROP supprime définitivement un objet. Elle est utilisée pour

  1. Supprimer une base de données de la MySQL serveur.
  2. Supprimer un objet tel qu'une table ou une colonne d'une base de données.

⚠️ Attention : La commande DROP est irréversible. Ni l'objet ni les lignes qu'il contient ne peuvent être récupérés sans sauvegarde. Il est donc impératif d'exécuter une requête SELECT sur la cible et de vérifier l'existence de la sauvegarde au préalable.

Goutteping une colonne

Dans l'exemple ALTER ci-dessus, une colonne nommée credit_card_number a été ajoutée à la table members. Supposons que la fonctionnalité de facturation en ligne soit reportée et que cette colonne doive être supprimée. Le script suivant permet de le faire.

ALTER TABLE `members` DROP COLUMN `credit_card_number`;

L'exécution du script supprime la colonne credit_card_number de la table members. Un nouvel affichage des colonnes confirme ce résultat.

SHOW COLUMNS FROM `members`;
Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
noms complets varchar (350) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL

Le numéro de carte de crédit a disparu de la liste des champs.

TABLE DROP

La syntaxe pour supprimer une table entière d'une base de données est la suivante.

DROP TABLE `sample_table`;

Appliquée à un objet réel, cette affirmation se présente ainsi.

DROP TABLE `categories_archive`;

Son exécution supprime de la base de données la table nommée `categories_archive` et toutes les lignes qu'elle contient.

SUPPRIMER LA BASE DE DONNÉES

Le même mot-clé supprime un schéma entier. L'ajout de IF EXISTS supprime l'erreur qui MySQL Lève une exception lorsque la cible a déjà disparu, ce qui est utile dans les scripts qui s'exécutent plusieurs fois.

DROP DATABASE IF EXISTS `myflixdb_backup`;

La suppression d'un objet est définitive. Si l'objet lui-même doit être conservé et que seul son nom est incorrect, la commande RENAME est l'outil approprié.

Qu'est-ce que la commande RENAME dans MySQL?

La commande RENAME permet de modifier le nom d'un objet de base de données existant, tel qu'une table ou une colonne, en lui attribuant un nouveau nom. Renommer une table n'entraîne pas la perte des données qu'elle contient.

La commande possède la syntaxe de base suivante.

RENAME TABLE `current_table_name` TO `new_table_name`;

Pour renommer la table movierentals en movie_rentals, le script ci-dessous est utilisé.

RENAME TABLE `movierentals` TO `movie_rentals`;

Son exécution renomme la table `movierentals` en `movie_rentals`. Comme il ne s'agit que d'un changement d'étiquette, la même instruction, exécutée en sens inverse, rétablit le nom d'origine.

RENAME TABLE `movie_rentals` TO `movierentals`;

La commande RENAME TABLE permet de renommer une table. colonne, et modifier ce qu'il contient, c'est le rôle du mot-clé CHANGE.

MODIFIER le mot-clé

Le mot-clé CHANGE vous permet de

  1. Modifier le nom d'une colonne
  2. Modifier le type de données de la colonne
  3. Modifier les contraintes de colonne

Prenons un exemple. Le champ full_names de la table members est de type varchar et a une largeur de 350 caractères, comme le confirme le script ci-dessous.

SHOW COLUMNS FROM `members`;
Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
noms complets varchar (350) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL

Supposons que l'exigence soit de

  1. Modifiez le nom du champ de « full_names » à « fullname ».
  2. Modifiez-le en type de données char avec une largeur de 250.
  3. Ajouter une contrainte NOT NULL

Les trois modifications sont effectuées par une seule instruction CHANGE.

ALTER TABLE `members` CHANGE COLUMN `full_names` `fullname` char(250) NOT NULL;

L'exécution de cette commande sur myflixdb, puis l'exécution du script SHOW COLUMNS, donne le résultat suivant.

Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
nom complet char (250) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL

La colonne s'appelle désormais fullname, contient char(250) et rejette les valeurs NULL.

MODIFIER le mot-clé

Le mot-clé MODIFY vous permet de

  1. Modifier le type de données de la colonne
  2. Modifier les contraintes de colonne

Dans l'exemple CHANGE ci-dessus, le nom du champ a dû être fourni deux fois, même si le renommage ne constituait qu'une partie de l'objectif. Omettre le nom du champ dans une instruction CHANGE génère une erreur. Lorsque seuls le type de données et les contraintes doivent être ajustés et que le nom doit rester inchangé, la fonction MODIFY remplit cette fonction en une seule mention de la colonne.

Le script ci-dessous modifie la largeur du champ « nom complet » de 250 à 50.

ALTER TABLE `members` MODIFY `fullname` char(50) NOT NULL;

L'exécution de cette commande sur myflixdb, puis l'exécution du script SHOW COLUMNS, donne le résultat affiché ci-dessous.

Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
nom complet char (50) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL

⚠️ Attention : Réduire le nombre de caractères d'une colonne tronque les données qui ne tiennent plus. Tout nom de plus de 50 caractères est tronqué par cette instruction ; vérifiez donc la valeur la plus longue. SELECT requête avant de réduire un champ.

MODIFIER vs MODIFIER vs RENOMMER LA COLONNE

Ces trois mots-clés se recoupent, et choisir le mauvais est la source d'erreurs la plus fréquente dans ce domaine. Le tableau ci-dessous les compare.

Mots-clés Renomme la colonne Modifie le type et les contraintes Ancien nom requis Utilisation typique
CHANGEMENT Oui Oui Oui, et le nouveau nom Renommer et redéfinir en une seule instruction
MODIFIER Non Oui Nom donné une fois Élargir, rétrécir ou retaper une colonne
RENOMMER LA COLONNE Oui Non Oui, et le nouveau nom Renommer uniquement, à partir de MySQL 8.0 à partir de maintenant

MySQL La version 8.0 a ajouté une quatrième option pour le cas le plus simple : un renommage sans aucune redéfinition.

ALTER TABLE `members` RENAME COLUMN `fullname` TO `full_name`;

Le type et le nom sont définis. Reste à savoir où placer la nouvelle colonne dans le tableau ; c’est le mot-clé AFTER qui détermine cet emplacement.

APRÈS Mot-clé

Par défaut, une colonne ajoutée avec ALTER TABLE est placée à la fin de la table. Pour la placer à une position spécifique, la commande ALTER est combinée avec le mot-clé AFTER.

Le script ci-dessous ajoute « date_of_registration » directement après « date_of_birth » dans la table des membres.

ALTER TABLE `members` ADD `date_of_registration` date NULL AFTER `date_of_birth`;

L'exécution de cette commande sur myflixdb, puis l'exécution du script SHOW COLUMNS, donne le résultat affiché ci-dessous.

Champ Type Null ACTIVITES Réglage par défaut Extra
numéro de membre int (11) NON PRI NULL incrémentation automatique
nom complet char (50) NON NULL
le sexe varchar (6) OUI NULL
date_de_naissance données OUI NULL
date_d'enregistrement données OUI NULL
adresse physique varchar (255) OUI NULL
adresse postale varchar (255) OUI NULL
numéro_de_contact varchar (75) OUI NULL
en nous envoyant un mail varchar (255) OUI NULL

La ligne en surbrillance correspond à la colonne ajoutée après la date de naissance. Le mot-clé FIRST fonctionne de la même manière et place la nouvelle colonne en tête du tableau.

FAQ

Non. Les instructions DDL telles que ALTER, DROP et RENAME s'engagent implicitement dans MySQLUne transaction ouverte ne peut donc pas les annuler. La restauration à partir d'une sauvegarde est la seule solution.

Cela dépend de la modification. De nombreuses modifications InnoDB s'exécutent en ligne et autorisent les lectures et écritures simultanées, tandis que d'autres copient la table entière et bloquent les écritures. Ajoutez les clauses ALGORITHM et LOCK pour spécifier les opérations autorisées.

DROP supprime l'objet lui-même. TRUNCATE vide une table tout en conservant sa structure. EFFACER Supprime les lignes sélectionnées et peut être filtrée avec une clause WHERE.

Généralement, oui. Les assistants IA intégrés aux clients tels que MySQL Workbench transformer une requête comme « ajouter une colonne de date pouvant être nulle après date_of_birth » en une syntaxe valide. RevVérifiez la déclaration générée par rapport au schéma en direct avant de l'exécuter.

Seulement en partie. Les outils d'analyse par IA signalent les risques évidents, comme une colonne supprimée mais toujours référencée dans une requête ou un type restreint qui tronque les données. Ils ne peuvent pas examiner tous les appelants ; une exécution préliminaire reste donc nécessaire.

Résumez cet article avec :