Aller au contenu
M06 · C. Manipuler les données

Interroger : SELECT, WHERE, ORDER BY, LIMIT

Lire des données avec SELECT, filtrer avec WHERE (comparaisons, AND/OR, BETWEEN, IN, LIKE, IS NULL), trier avec ORDER BY et limiter avec LIMIT.

1Situer

La boutique tourne, la base se remplit. La présidente pose des questions tous les jours : « quels produits sont en rupture ? », « qui s'est inscrit cette année ? », « quels sont nos trois produits les plus chers ? ». Chaque question devient une requête SELECT. C'est la commande SQL qu'on écrit le plus souvent, et celle qu'on demande le plus en examen.

2Comprendre

L'ordre d'exécution d'un SELECT
SELECT nom, prix FROM produits WHERE prix < 150 AND stock > 0 ORDER BY prix LIMIT 3; 1 2 3 45 Résultat Tajine · 180 · 14 Plat · 250 · 0 Bol · 45 · 60 Huile · 120 · 35 Savon · 30 · 120 Eau de rose · 55 · 0 … 6 autres lignes

On écrit SELECT en premier... mais ce n'est pas par là que le SGBD commence.

1 / 5

Choisir les colonnes : SELECT … FROM

SELECT * FROM produits;                          -- toutes les colonnes
SELECT nom, prix FROM produits;                  -- certaines colonnes
SELECT nom, prix * 1.2 AS prix_ttc FROM produits;  -- une colonne calculée, renommée avec AS
SELECT DISTINCT ville_id FROM clients;           -- sans les doublons

Filtrer les lignes : WHERE

OpérateurSensExemple
=, <>, <, >, <=, >=comparaisonprix >= 100
AND, OR, NOTcombinerstock > 0 AND prix < 150
BETWEEN a AND bintervalle (bornes comprises)prix BETWEEN 50 AND 200
IN (...)dans une listeville_id IN (1, 5)
LIKEmotif de texte (% plusieurs caractères, _ un seul)nom LIKE 'Tajine%'
IS NULL, IS NOT NULLvaleur inconnueemail IS NULL

Trier et limiter : ORDER BY, LIMIT

SELECT nom, prix FROM produits ORDER BY prix DESC LIMIT 3;   -- le top 3
SELECT prenom, nom FROM clients ORDER BY nom, prenom;        -- par nom, puis par prénom
SELECT nom FROM produits ORDER BY nom LIMIT 4 OFFSET 4;      -- page 2 (4 par page)
Exemple simple

La question au bibliothécaire

« Donne-moi le titre et l'auteur (SELECT) des livres du rayon Romans (FROM) écrits après 2010 (WHERE), du plus récent au plus ancien (ORDER BY). » Une requête SELECT est une question bien formulée.

SELECT titre, auteur
FROM livres
WHERE annee > 2010
ORDER BY annee DESC;
Exemple simple

Le tamis

WHERE est un tamis : chaque ligne passe devant la condition. Si la condition est vraie, la ligne passe ; sinon, elle reste dans le tamis.

3Manipuler

La base de la boutique est chargée (tables à gauche, cliquez sur un nom pour voir son contenu). Écrivez une requête par consigne : elle se coche quand le résultat est juste. Le bouton « Pas à pas dans le lab » montre l'exécution étape par étape.
Pas à pas dans le lab ↗ La base de départ se crée dans votre navigateur (moteur SQL d’environ 700 Ko, chargé une fois).
Résultat

Le résultat de chaque requête s'affichera ici.

Consignes 0 / 5

  1. Le nom et le prix des produits qui coûtent plus de 150 DH
  2. Le prénom et le nom des clients inscrits en 2025
  3. Les clients (prénom, nom) qui n'ont pas donné d'email
  4. Les produits dont le nom commence par « B »
  5. Le nom et le prix des 3 produits les plus chers, du plus cher au moins cher

4Pratiquer

Exercice 1 · Plusieurs conditions

Les produits de la catégorie 2 OU 3 qui coûtent moins de 100 DH. Attention aux parenthèses.

Voir le corrigé
SELECT nom, prix, categorie_id
FROM produits
WHERE (categorie_id = 2 OR categorie_id = 3)
  AND prix < 100;
-- ou : WHERE categorie_id IN (2, 3) AND prix < 100

Exercice 2 · Calculer une colonne

Affichez le nom de chaque produit et la valeur de son stock (prix × stock) sous le nom valeur_stock, triée de la plus grande à la plus petite.

Voir le corrigé
SELECT nom, prix * stock AS valeur_stock
FROM produits
ORDER BY valeur_stock DESC;

Exercice 3 · Pagination

Le site affiche 4 produits par page, triés par nom. Écrivez la requête de la page 2.

Voir le corrigé
SELECT nom, prix FROM produits
ORDER BY nom
LIMIT 4 OFFSET 4;   -- saute les 4 de la page 1

5Vérifier

1. Quelle condition trouve les clients sans email ?
2. Que trouve LIKE '%argan%' ?
3. Dans quel ordre le SGBD traite-t-il SELECT nom FROM produits WHERE prix > 100 ORDER BY nom ?