La requête SELECT
On choisit quelles colonnes (SELECT) et dans quelle table (FROM). Un calcul peut recevoir un alias avec AS.
SELECT * FROM campagne; -- tout (exploration) SELECT libelle, prix_litre FROM campagne; -- colonnes précises SELECT libelle, prix_litre * 1000 AS prix_1000L FROM campagne;
Évitez
SELECT * en production — nommer les colonnes rend la requête lisible, stable si la table évolue, et transfère moins de données.Filtrer avec WHERE
WHERE ne garde que les lignes qui satisfont une condition. Opérateurs : =, <>, <, <=, >, >=, combinés par AND, OR, NOT.
SELECT * FROM campagne WHERE statut = 'OUVERTE'; SELECT * FROM campagne WHERE prix_litre < 1.10; SELECT * FROM campagne WHERE commune = 'Ladignac-le-Long' AND statut = 'OUVERTE';
Priorité —
AND passe avant OR. En cas de doute, mettez des parenthèses pour clarifier l'intention.IN, BETWEEN, LIKE, IS NULL
| Opérateur | Exemple |
|---|---|
| IN | commune IN ('Ladignac','Nexon') |
| BETWEEN | prix_litre BETWEEN 1.00 AND 1.20 |
| LIKE | nom LIKE 'Du%' (%=suite, _=1 car.) |
| IS NULL | email IS NULL |
NULL ≠ valeur —
NULL signifie « inconnu ». WHERE email = NULL ne renvoie jamais rien : il faut IS NULL / IS NOT NULL.ORDER BY, DISTINCT, LIMIT
SELECT libelle, prix_litre FROM campagne ORDER BY prix_litre ASC; SELECT DISTINCT commune FROM campagne; -- sans doublon SELECT * FROM campagne ORDER BY prix_litre LIMIT 3; -- top 3 SELECT * FROM campagne ORDER BY id LIMIT 10 OFFSET 20; -- pagination
Ordre d'exécution — le moteur traite
FROM → WHERE → GROUP BY → SELECT → ORDER BY → LIMIT. C'est pourquoi un alias du SELECT est utilisable dans ORDER BY mais pas dans WHERE.🛢️ Sur le projet Fioul Groupé
Écran « campagnes ouvertes de ma commune », trié du meilleur prix au moins bon — exactement ce que l'appli mobile affiche :
SELECT libelle, prix_litre, date_cloture FROM campagne WHERE commune = 'Ladignac-le-Long' AND statut = 'OUVERTE' ORDER BY prix_litre ASC;
À retenir
- SELECT colonnes FROM table : la lecture de base ; AS pour un alias.
- WHERE filtre les lignes ; AND/OR/NOT, IN, BETWEEN, LIKE, IS NULL.
- NULL se teste avec IS NULL, jamais avec = .
- ORDER BY trie, DISTINCT dédoublonne, LIMIT/OFFSET paginent.