• 6 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 8/26/22

Modifiez la structure d’un objet avec ALTER TABLE

Log in or subscribe for free to enjoy all this course has to offer!

Insérer de la donnée, la modifier, la supprimer, ou bien en tirer des informations utiles est désormais à votre portée. Bien joué !

Mais il reste une chose à voir, une chose importante dont vous aurez toujours besoin si vous souhaitez adapter votre BDD aux évolutions de votre application.

Vous voyez laquelle c’est ? 🤔

Il s’agit de la modification de la structure de la BDD en elle-même. Commençons simplement par l’ajout et la suppression de champs.

Ajoutez ou supprimez un champ

Ajoutez un champ aux aliments

Le dernier rapport sur l’utilisation de Foodly vient de tomber. Dans celui-ci, les utilisateurs ont pu voter pour les améliorations qu’ils souhaiteraient voir apparaître dans l’application.

La plus demandée était celle de voir la contenance en vitamines de chaque aliment.

Sachant cela, l’équipe de Foodly organise une réunion concernant l’implémentation d’une telle fonctionnalité. Le design est prêt, les développeurs ont codé l’interface, mais il manque une chose cruciale pour récupérer la contenance en vitamines dans l’application : l’ajout de cette donnée dans la BDD.

Prenons l’exemple de la vitamine C.

Cette colonne n’apparaît nulle part dans le schéma de la table aliment. Il nous faut la créer.

De la même manière que vous l’avez fait lors de la première partie,  il faudra spécifier son type à MySQL. Pour ce faire, utilisez la commandeALTER TABLE.

Voyons à quoi ressemble la commande SQL pour rajouter cette colonne, puis décortiquons-la ensemble :

ALTER TABLE aliment ADD vitamines_c FLOAT;

Ici, on signale à MySQL :

  • de modifier la structure d’une table avecALTER TABLE ;

  • quelle table modifier (ici “aliment”) ;

  • que la modification va faire ajouter une colonne avecADD;

  • le nom de cette nouvelle colonne (ici “vitamines_c”) ;

  • enfin, le type de la colonne (ici,FLOAT, car les vitamines sont stockées usuellement en mg/100g, valeur décimale).

    Récapitulatif visuel du paragraphe rédigé ci-dessus
    La commande ALTER TABLE
À vous de jouer !

Faisons un petit exercice :

Admettons que l’on souhaite rajouter une colonne à la table “langue”. Cette colonne, c’est le code ISO des langues (par exemple : “fr-fr” pour le Français de métropole).

Comment feriez-vous cela ?

Tentez de créer la colonne et de la remplir par vous-même pour le Français et l’Anglais. Voici la correction :

Supprimez un champ aux aliments

Le management de chez Foodly nous mentionne d’autres changements à effectuer sur l’application, qui impliquent la BDD. C’est une nouvelle surprenante !

Les utilisateurs de Foodly n’utilisent que très rarement la fonctionnalité pour savoir si un aliment est bio ou non. 😢

Les développeurs, dans leur volonté de toujours diminuer la dette technique (à savoir, le code à maintenir), souhaitent retirer l’affichage bio de la fiche des aliments sur Foodly.

En tant que gestionnaire de la BDD, vous pensez qu’il serait pratique de faire de même de votre côté, pour éviter de maintenir un champ qui ne sera plus mis à jour.

Pour ce faire, rien de plus simple : supprimons la colonne “bio” de la table “aliment” avec  DROP  .

Voici la commande SQL pour le faire :

ALTER TABLE aliment DROP bio;
Récapitulatif visuel du paragraphe rédigé ci-dessus
Utilisation de DROP

Vous voyez, c’est vraiment très simple. 😉

À vous de jouer !

Maintenant, admettons que le service légal de Foodly vous dise que stocker des noms de famille va à l’encontre des conditions de protection des données des utilisateurs.

Comment feriez-vous pour supprimer les noms de famille ?

Essayez de la faire. Si vous êtes coincé, là correction est juste ici 👇

Modifiez un champ existant

Modifiez un champ des aliments

Le management de Foodly revient encore une fois vers vous !

Après avoir regardé des utilisateurs se servir de Foodly, ils se sont rendu compte que les utilisateurs souhaiteraient pouvoir filtrer les aliments selon leurs apports calorifiques avec plus de précision.

Pour ce faire, les développeurs vous indiquent qu’ils vont devoir comparer les calories de deux aliments entre eux, et ce, à la virgule près.

Or, les calories sont actuellement stockées sous forme d’entiers (sans décimales, du coup). Comment les modifier ?

Voici la commande pour effectuer cette opération :

ALTER TABLE aliment MODIFY calories FLOAT;
Récapitulatif visuel du paragraphe rédigé ci-dessus
L'utilisation de FLOAT

À vous de jouer !

Les développeurs viennent vous voir affolés ! Certains utilisateurs ne peuvent pas s’inscrire car leur email dépasse les 255 caractères.

Pourriez-vous augmenter la limite à 500 ?

Tentez par vous-même. Une fois fait, voici la correction :

Renommez un champ des aliments

Ce coup-ci, c’est la designer de Foodly qui revient vers vous : les utilisateurs sont perturbés… 😨 Pour chaque aliment, la valeur en protéines, vitamines, matières grasses est mentionnée au pluriel. Alors que les sucres, eux, sont mentionnés au singulier. Ce qui perturbe la compréhension des aliments par les utilisateurs.

Comment renommer cette colonne dans la BDD ?

Voici la commande à effectuer :

ALTER TABLE aliment CHANGE sucre sucres FLOAT;

C’est une spécificité propre à MySQL : pour renommer une colonne, il faut aussi indiquer son type. Ce qui n’est pas nécessaire si vous utilisez un autre SGBD. Cela permet de modifier à la fois le nom et le type d’une colonne dans une seule commande. Et ce, même si vous ne souhaitez pas le modifier (réutilisez alors le même type 😉).

À vous de jouer !

A présent, les développeurs trouvent que le nom “code” dans la table des langues est peu explicite. Ils aimeraient qu’elle s’appelle “code_pays”.

Pouvez-vous implémenter ce changement ?

Une fois que vous aurez essayé, retrouvez ci-dessous la correction 👇

En résumé

  • Vous savez que toute modification de la structure d’un objet s’effectue avec une commandeALTER TABLE.

  • Pour ajouter un champ à un objet, il vous faut utiliser le mot cléADD.

  • Pour supprimer un champ, le mot clé estDROP.

  • Pour modifier un champ, le mot clé estMODIFYpour en modifier la structure,CHANGEpour le renommer.

Vous voilà capable de totalement modifier le schéma d’une table d’une BDD MySQL. Vous êtes presque maître en BDD MySQL. 👌

Presque ? Il vous reste encore à apprendre à modifier des relations dans une table ! Ne vous inquiétez pas, vous allez tout comprendre dans le chapitre suivant.

Example of certificate of achievement
Example of certificate of achievement