Adloun

Ce que chaque requête rend vraiment

Exercice d'entraînement · niveau 3 (difficile) · mathématiques (ECT 1re année), chapitre 13 — Informatique et algorithmique · Bases de données

Énoncé

La table clients(id, nom, ville, remise) contient les quatre lignes suivantes.

idnomvilleremise
1AdamLyon5
2BruelLille0
3CostaLyon8
4DiazNice5

Dire ce que rend chacune des trois requêtes, puis expliquer ce que ferait DELETE FROM clients;.

Corrigé

Première requête.

SELECT nom FROM clients WHERE ville = 'Lyon' AND remise > 5;

Deux clients sont à Lyon : Adam (remise ) et Costa (remise ). La condition demande une remise strictement supérieure à : Adam est écarté. La requête rend une seule ligne, Costa.

Deuxième requête.

SELECT nom, ville FROM clients WHERE remise = 5 OR ville = 'Lille';

Le OR retient une ligne dès qu'au moins une des deux conditions est vraie : Adam (remise ), Bruel (ville Lille) et Diaz (remise ). Costa n'a ni l'une ni l'autre. La requête rend trois lignes, avec deux colonnes.

Troisième requête.

SELECT nom FROM clients WHERE ville <> 'Lyon';

Elle rend les clients qui ne sont pas à Lyon : Bruel et Diaz.

La requête sans WHERE. DELETE FROM clients; supprime toutes les lignes de la table, les quatre à la fois, sans avertissement et sans retour en arrière. La table subsiste, mais vide. C'est l'erreur la plus coûteuse du chapitre : la clause WHERE n'est pas un ornement, c'est elle qui limite la portée de la suppression.

Le point délicat. SELECT ne modifie jamais la base, INSERT, UPDATE et DELETE la modifient. Avant d'exécuter l'un des trois derniers, on écrit souvent la même condition dans un SELECT pour voir quelles lignes seront touchées.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.