SELECT, WHERE et tri
Le modèle relationnel en une image
Une base de données relationnelle organise l'information en tables (comme des feuilles de tableur), chaque ligne étant un enregistrement, chaque colonne un attribut.
Table clients
| id | nom | ville | date_inscription |
|----|----------|---------|-------------------|
| 1 | Dupont | Paris | 2024-03-15 |
| 2 | Martin | Lyon | 2024-06-02 |
SELECT : extraire des données
SELECT * FROM clients;
SELECT nom, ville FROM clients;
SELECT * récupère toutes les colonnes, mais en pratique il vaut mieux nommer explicitement les colonnes nécessaires : plus lisible, et plus performant sur une grosse table.
WHERE : filtrer les résultats
SELECT nom FROM clients WHERE ville = 'Paris';
SELECT nom FROM clients WHERE date_inscription > '2024-06-01';
SELECT nom FROM clients WHERE ville = 'Paris' AND date_inscription > '2024-01-01';
ORDER BY et LIMIT
SELECT nom, date_inscription FROM clients
ORDER BY date_inscription DESC
LIMIT 10;
Cette requête retourne les 10 clients les plus récemment inscrits, du plus récent au plus ancien.
Cas concret
Un support technique doit vérifier si un client précis existe dans la base avant de traiter sa demande. Plutôt que de demander à un développeur d'écrire un outil dédié, une requête simple SELECT * FROM clients WHERE email = 'client@exemple.com' répond en quelques secondes directement sur la base, une compétence transversale utile bien au-delà du développement pur.
Erreurs fréquentes
- Utiliser
SELECT *sur une table volumineuse en production quand seules 2-3 colonnes sont nécessaires : consomme des ressources inutilement. - Oublier les guillemets simples autour des valeurs texte (
WHERE ville = Parisau lieu deWHERE ville = 'Paris') : erreur de syntaxe SQL fréquente pour les débutants. - Confondre
=(égalité exacte) etLIKE(recherche partielle avec motif) :WHERE nom = 'Dup'ne trouvera jamais "Dupont", il fautWHERE nom LIKE 'Dup%'.
À retenir
- SELECT extrait des colonnes précises, WHERE filtre les lignes selon une condition.
- ORDER BY trie les résultats, LIMIT en restreint le nombre retourné.
- Nommer explicitement les colonnes plutôt que SELECT * est une meilleure pratique de performance et de lisibilité.
Mini-exercice
Écrire une requête qui retourne les 5 clients de Lyon les plus récemment inscrits, uniquement leur nom et leur date d'inscription.
*Réponse : SELECT nom, date_inscription FROM clients WHERE ville = 'Lyon' ORDER BY date_inscription DESC LIMIT 5;