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
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 colonnesSELECT nom, prix FROM produits; -- certaines colonnesSELECT nom, prix *1.2AS prix_ttc FROM produits; -- une colonne calculée, renommée avec ASSELECTDISTINCT ville_id FROM clients; -- sans les doublons
Filtrer les lignes : WHERE
Opérateur
Sens
Exemple
=, <>, <, >, <=, >=
comparaison
prix >= 100
AND, OR, NOT
combiner
stock > 0 AND prix < 150
BETWEEN a AND b
intervalle (bornes comprises)
prix BETWEEN 50 AND 200
IN (...)
dans une liste
ville_id IN (1, 5)
LIKE
motif de texte (% plusieurs caractères, _ un seul)
nom LIKE 'Tajine%'
IS NULL, IS NOT NULL
valeur inconnue
email IS NULL
Trier et limiter : ORDER BY, LIMIT
SELECT nom, prix FROM produits ORDERBY prix DESCLIMIT3; -- le top 3SELECT prenom, nom FROM clients ORDERBY nom, prenom; -- par nom, puis par prénomSELECT nom FROM produits ORDERBY nom LIMIT4OFFSET4; -- 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 >2010ORDERBY 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.
Publicité
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
Le nom et le prix des produits qui coûtent plus de 150 DH
Le prénom et le nom des clients inscrits en 2025
Les clients (prénom, nom) qui n'ont pas donné d'email
Les produits dont le nom commence par « B »
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 =2OR 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
ORDERBY 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
ORDERBY nom
LIMIT4OFFSET4; -- saute les 4 de la page 1