Mettez à jour un objet en particulier
Admettons maintenant qu’un utilisateur souhaite mettre à jour son e-mail via l’application. Comment Foodly traduirait ceci en commande SQL pour MySQL ?
Ici, le mot clé magique est UPDATE
, qui signifie “mise à jour” en anglais. Plutôt logique. 😉
Mais avant de se lancer, prenons un peu de recul...
On veut changer l'e-mail d'un utilisateur. J'ai bien dit UN utilisateur et non plusieurs. Cela pose la question de comment identifier l'utilisateur, et comment sélectionner la ligne correspondant.
Maintenant que vous avez cela en tête, tapez cette commande dans votre terminal pour changer l’e-mail du premier utilisateur :
UPDATE `utilisateur` SET `email` = 'quentind@gmail.com' WHERE `id` = '1';
Vous devriez avoir un message qui confirme ce changement :
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Prenez le temps de bien lire ce message et de bien comprendre les informations qu'il nous donne.
Décomposons la commande ensemble :
Mot clé | Description |
UPDATE table | Signifie à SQL que vous souhaitez mettre à jour de la donnée dans votre BDD. Vous indiquez aussi la table dans laquelle se trouve(nt) le ou les objets que vous souhaitez modifier. |
SET colonne = valeur | Sert à indiquer à SQL quelles sont la ou les colonnes à modifier, et quelles sont la ou les valeurs qu’elles doivent désormais prendre. |
WHERE colonne = valeur | C’est ce qu’on appelle un filtre. Vous allez les voir plus en détail dans la partie 3, mais sachez qu’ils servent à restreindre la commande en cours à un ou des objets répondant à des conditions précises. Ici, on va mettre à jour uniquement l’objet dont l’id est 1, soit le premier utilisateur ! |
Contrôlez les modifications effectuées
Si vous lisez à nouveau les données de votre BDD sur la table “utilisateur”, vous remarquerez que l’e-mail de l’utilisateur avec l’id 1 est celui qu’on vient de taper.
On peut utiliser la commandeSELECT * FROM utilisateur;
qui nous donne toutes les lignes de la table, mais également la commandeSELECT * FROM `utilisateur` WHERE `id` = '1';
qui nous donne uniquement la ligne qui nous intéresse.
Mettez à jour tous les objets
À votre avis, que se passerait-il si on tapait la commande :
UPDATE `utilisateur` SET prenom = "quentin";
Indice : ça n'est pas une bonne idée. 😃 Mais comme nous sommes ici pour apprendre, je vous invite à le faire quand même. Notez au passage que je n'ai pas mis de`
autour de prenom
!
Selon toute vraisemblance vous devriez avoir un message de type : Query OK, 14 rows affected (0.00 sec)
.
Un petit SELECT * FROM utilisateur;
devrait vous convaincre de faire très attention quand on utilise ce type de commande.
À vous de jouer !
Nous avons oublié de préciser le type de pomme vendue à Intermarché. Il s'agit d'une pomme golden. Comment feriez-vous pour rectifier le tir ?
Essayez de faire la modification dans votre terminal, puis regardez la correction avec le sccrencast :
En résumé
On met à jour les objets d’une table avec la commande
UPDATE
.Lors de l’utilisation de cette commande, on mentionne quelles sont les colonnes qu’on souhaite mettre à jour avec
SET
.Pour bien spécifier les objets que l'on souhaite modifier, on ajoute une condition grâce au mot clé
WHERE
Si on ne filtre pas avec
WHERE
, on risque de mettre à jour tous les objets de la table. Ce qui est rarement ce que l’on souhaite !
Vous voici capable de modifier la donnée présente dans votre BDD ! Allons encore plus loin : imaginez que vous souhaitiez supprimer de la donnée. Vous allez voir dans le chapitre suivant comment cela se passe !