Polarys

Interroger une base

SELECT, WHERE et tri

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 = Paris au lieu de WHERE ville = 'Paris') : erreur de syntaxe SQL fréquente pour les débutants.
  • Confondre = (égalité exacte) et LIKE (recherche partielle avec motif) : WHERE nom = 'Dup' ne trouvera jamais "Dupont", il faut WHERE 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;

Quiz de validation

Quiz - 2 questions

1. Pourquoi éviter SELECT * sur une grosse table quand seules quelques colonnes sont nécessaires ?

2. Quelle clause utiliser pour une recherche partielle (motif) plutôt qu'une égalité exacte ?

Suis ta progression

Crée un compte gratuit pour suivre ta progression et accéder à toutes les leçons.