CodeGym /Cours /SQL SELF /Utilisation de WHERE pour mettre à jour et ...

Utilisation de WHERE pour mettre à jour et supprimer des données

SQL SELF
Niveau 21 , Leçon 4
Disponible

Imagine que tu es admin de base de données et que tu dois modifier ou supprimer des enregistrements. Mais si jamais tu mets à jour ou supprimes tout par accident ? Utiliser l'opérateur WHERE, c'est un peu ta "assurance" contre les catastrophes. Ça te permet de préciser exactement quelles lignes doivent être affectées par tes requêtes.

Par exemple :

UPDATE students
SET status = 'Gradué';
Cette requête va mettre à jour absolument toutes les lignes de la table students. Et imagine qu'au lieu de féliciter tout le monde pour leur diplôme, tu mets par erreur status = 'Exclu' à tous. Flippant, non ? Pour éviter ça, on utilise toujours WHERE pour préciser les conditions qui déterminent quelles lignes doivent être modifiées ou supprimées.

Syntaxe de la condition WHERE

WHERE sert à filtrer les lignes sur lesquelles l'opérateur va agir. Tu peux l'utiliser avec UPDATE ou DELETE. La syntaxe ressemble à ça :

Pour UPDATE :

UPDATE table
SET colonne1 = valeur1, colonne2 = valeur2
WHERE condition;

Pour DELETE :

DELETE FROM table
WHERE condition;

Sans WHERE, les changements toucheront toutes les lignes de la table. Donc pense toujours à mettre une condition pour éviter de modifier des données que tu ne voulais pas toucher.

Utilisation des opérateurs de comparaison

Pour construire des conditions dans WHERE, on utilise des opérateurs de comparaison. Voilà les principaux :

Opérateur Description Exemple
= Égal age = 18
<> Différent age <> 18
> Supérieur à age > 18
< Inférieur à age < 18
>= Supérieur ou égal à age >= 18
<= Inférieur ou égal à age <= 18

Exemple : on met à jour le statut d'un étudiant

Si tu veux marquer tous les étudiants de plus de 21 ans comme "gradués", tu fais comme ça :

UPDATE students
SET status = 'Gradué'
WHERE age > 21;

Exemple : on supprime tous les étudiants de moins de 18 ans

Si quelqu'un a ajouté par erreur des étudiants mineurs, tu peux les supprimer :

DELETE FROM students
WHERE age < 18;

Conditions complexes avec des opérateurs logiques

Souvent, il faut filtrer les lignes selon plusieurs critères. Par exemple, pour mettre à jour seulement les étudiants qui ont plus de 18 ans et qui sont en cours de programmation. Pour ça, on utilise les opérateurs logiques : AND, OR et NOT.

Opérateurs logiques :

Opérateur Description Exemple
AND Ça marche si toutes les conditions sont vraies age > 18 AND course = 'Programming'
OR Ça marche si au moins une condition est vraie age > 18 OR course = 'Programming'
NOT Inverse le résultat de la condition NOT (age < 18)

Exemple : on met à jour seulement les étudiants en programmation de plus de 18 ans

UPDATE students
SET status = 'Avancé'
WHERE age > 18 AND course = 'Programming';

Exemple : on supprime tous les étudiants de moins de 18 ans ou ceux qui sont au cours "Chant"

DELETE FROM students
WHERE age < 18 OR course = 'Singing';

Comment éviter les boulettes catastrophiques

Vérifie toujours ta condition avant d'exécuter !

Si tu fais une requête sans WHERE, PostgreSQL va joyeusement l'appliquer à toutes les lignes de la table. Voilà ce qui arrive :

DELETE FROM students;
-- Oups ! Toutes les entrées de la table students ont été supprimées !

Pour éviter ça, ajoute WHERE :

DELETE FROM students
WHERE student_id = 123;

Astuce : si tu n'es pas sûr de l'effet de ta condition, commence par une commande SELECT. Par exemple :

SELECT * FROM students
WHERE student_id = 123;

Une fois que tu es sûr que la sélection est bonne, tu peux faire ton UPDATE ou DELETE.

Exemples pratiques

Exemple 1 : Mise à jour des statuts des étudiants

Imaginons qu'on a une table students :

student_id name age course status
1 Otto Lin 20 Programming Débutant
2 Maria Chi 22 Mathematics Gradué
3 Eva Gram 19 Programming Débutant

On veut marquer tous les étudiants en programmation de plus de 18 ans comme "Intermédiaire" :

UPDATE students
SET status = 'Intermédiaire'
WHERE age > 18 AND course = 'Programming';

Résultat :

student_id name age course status
1 Otto Lin 20 Programming Intermédiaire
2 Maria Chi 22 Mathematics Gradué
3 Eva Gram 19 Programming Débutant

Exemple 2 : Suppression des étudiants exclus

Maintenant, imaginons qu'on a des étudiants dans des cours qu'on veut supprimer. Par exemple, ceux qui étaient au cours "Histoire de l'art". Table :

student_id name age course status
1 Otto Lin 20 Programming Intermédiaire
4 Alex Ming 21 Histoire de l'art Exclu

On supprime les étudiants du cours "Histoire de l'art" :

DELETE FROM students
WHERE course = 'Histoire de l\'art';
student_id name age course status
1 Otto Lin 20 Programming Intermédiaire

Exemple 3 : Mise à jour sans condition (et pourquoi c'est dangereux)

Si tu écris :

UPDATE students
SET status = 'Diplômé';

TOUS les étudiants deviendront diplômés. Donc, c'est vraiment conseillé d'utiliser WHERE à chaque fois !

Imaginons qu'au départ on avait cette table :

student_id name age course status
1 Otto Lin 20 Programming Intermédiaire
2 Maria Chi 22 Mathematics Gradué
3 Eva Gram 19 Programming Débutant

Après avoir fait UPDATE sans WHERE :

student_id name age course status
1 Otto Lin 20 Programming Diplômé
2 Maria Chi 22 Mathematics Diplômé
3 Eva Gram 19 Programming Diplômé

😬 Tu vois ? Tous les statuts ont été changés. L'erreur peut être irréversible, surtout sans backup. Donc WHERE c'est ton pote !

Pièges et subtilités

Même si l'opérateur WHERE est super utile, les débutants font souvent des erreurs :

  • Oubli de condition : tu oublies WHERE et toutes les lignes sont modifiées.
  • Mauvaise condition : si tu écris par exemple age = 19 au lieu de age < 19, tu modifies pas les bonnes données.
  • Conditions complexes : si tu te plantes dans les priorités (AND et OR), tu peux avoir des résultats chelous. Utilise des parenthèses pour que ce soit clair :
    DELETE FROM students
    WHERE (age > 18 AND course = 'Programming') OR course = 'Mathematics';
    

Essaie d'écrire tes requêtes pour qu'elles soient claires pour toi et tes collègues.

Maintenant tu sais comment utiliser WHERE pour mettre à jour et supprimer des données de façon safe et fiable. Cet outil, c'est vraiment ton meilleur pote quand tu bosses avec les bases de données. Et rappelle-toi : mieux vaut vérifier deux fois la condition que de devoir restaurer les données après !

1
Étude/Quiz
Insertion et mise à jour des données, niveau 21, leçon 4
Indisponible
Insertion et mise à jour des données
Insertion et mise à jour des données
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION