Question 1Lequel décrit correctement les rôles de SET et WHERE dans une instruction UPDATE ?
UPDATE et DELETE — mettre à jour et supprimer des lignes
Apprends SQL UPDATE et DELETE depuis les bases. Couvre les mises à jour multi-colonnes avec SET, les suppressions ciblées avec WHERE, et ce qui se passe quand tu oublies WHERE — tout s'exécute en direct dans ton navigateur.
UPDATE — réécrire des lignes existantes
INSERT servait à « ajouter de nouvelles lignes ». UPDATE est l'opération pour réécrire les valeurs de lignes qui existent déjà. Changer le statut d'un membre, réviser le prix d'un produit, mettre à jour un compteur d'achats — UPDATE fait partie du quotidien de toute app de production.
La forme de base est UPDATE nom_table SET col = val WHERE condition;. SET dit « quelle colonne reçoit quelle valeur », et WHERE dit « quelles lignes sont affectées ».
-- Réécrit le status du customer où id = 1 à 'active'
UPDATE customer SET status = 'active' WHERE id = 1;
-- Vérifie le résultat
SELECT * FROM customer;
UPDATE nom_table est la table cible, SET col = val est le changement, et WHERE condition réduit la liste des lignes. Visualise la position et le rôle de chacun.Oublier WHERE met à jour toutes les lignes
Retire le WHERE de UPDATE customer SET status = 'active' WHERE id = 1; (ça devient UPDATE customer SET status = 'active';) et chaque ligne de customer voit son status réécrit à 'active'. Aucune erreur n'est levée, et c'est exactement ce qui en fait un moyen facile de corrompre silencieusement des données de production.
Mettre à jour plusieurs colonnes d'un coup
En listant des paires `col = val` séparées par des virgules dans la clause SET, tu peux mettre à jour plusieurs colonnes d'un coup : SET col1 = val1, col2 = val2, ....
Le côté droit peut aussi être une expression qui inclut la colonne elle-même. SET price = price + 100 veut dire « réécris le price de la ligne cible à son price actuel plus 100 ».
col = val ou plusieurs séparées par des virgules, et le côté droit peut aussi être une expression.-- Met à jour plusieurs colonnes à des valeurs absolues d'un coup
UPDATE inventory SET price = 200, stock = 100 WHERE id = 2;
-- Met à jour avec des expressions (en référençant les valeurs existantes)
UPDATE inventory SET price = price + 100, stock = stock - 10 WHERE id = 2;
DELETE — supprimer des lignes
DELETE est l'opération pour supprimer des lignes d'une table. La forme de base est DELETE FROM nom_table WHERE condition;, avec WHERE qui réduit les lignes cibles. Contrairement à SELECT, il n'y a pas de liste de colonnes (SELECT col1, col2) — DELETE supprime des lignes entières.
La définition de la table (la structure des colonnes) reste en place, donc tu peux faire des INSERT dans la même table après suppression. Pour supprimer la table elle-même, utilise DROP TABLE / TRUNCATE (couvert dans le prochain article).
DELETE FROM nom_table est la table cible ; WHERE condition décide quelles lignes retirer. Il n'y a pas d'équivalent à la liste de colonnes de SELECT ni à la clause SET d'UPDATE dans DELETE.-- Supprime tous les abonnements expirés (status = 'expired')
DELETE FROM subscription WHERE status = 'expired';
-- Vérifie le résultat (seules les lignes survivantes restent)
SELECT * FROM subscription;
Attention au WHERE manquant — le piège de l'update/delete sur toutes les lignes
Oublier WHERE est l'accident le plus fréquent avec UPDATE et DELETE. Sans WHERE, la syntaxe reste légale — et la cible s'étend à chaque ligne de la table. UPDATE table SET col = val; réécrit chaque ligne à la même valeur ; DELETE FROM table; vide la table.
Même si tu remarques tout de suite, tu ne peux pas annuler après que le changement a été commité. La règle opérationnelle de base en production est de toujours exécuter le même WHERE en `SELECT` d'abord pour confirmer visuellement les lignes cibles avant de réécrire.
En production, confirme les lignes cibles avec SELECT d'abord
Pour un UPDATE / DELETE sur une base de production, exécute d'abord le même WHERE en SELECT et confirme visuellement que les lignes cibles sont bien celles attendues avant de basculer en réécriture. La procédure en deux étapes :
1. Exécute SELECT * FROM nom_table WHERE condition; pour confirmer les lignes cibles (le nombre de lignes et les valeurs correspondent-ils à ce que tu attendais ?)
2. Si tout a l'air bon, transforme le même WHERE en UPDATE nom_table SET col = val WHERE condition; ou DELETE FROM nom_table WHERE condition; et exécute
Comme la clause WHERE est réutilisée par copier-coller, ça réduit aussi le genre d'accident où WHERE est accidentellement supprimé lors de la réécriture.
Vérification des connaissances
Répondez à chaque question une par une.
Question 2Quelle est la bonne manière de mettre à jour à la fois name et email pour la ligne de customer où id = 1 en même temps ?
Question 3Que se passe-t-il quand tu exécutes DELETE FROM product; sans WHERE ?