SELECT et WHERE : les bases des requêtes SQL (guide débutant)
Interroger une base de données commence presque toujours par le même mot : SELECT. C’est l’ordre SQL qui permet de lire des données — afficher des colonnes, filtrer des lignes, trier un résultat. Si vous débutez en SQL, maîtriser SELECT et sa clause WHERE est la première étape, et de loin la plus utile : la grande majorité des requêtes du quotidien ne sont que des variations autour de ces deux mots-clés.
Ce guide pose les bases pas à pas, avec des exemples concrets et leur résultat. Une fois ces fondations acquises, vous pourrez aborder des notions plus avancées comme les jointures ou le regroupement avec GROUP BY.
Le jeu de données d’exemple
Les exemples s’appuient sur une table employes :
| id | nom | service | salaire | ville |
|---|---|---|---|---|
| 1 | Martin | Informatique | 3200 | Paris |
| 2 | Durand | Comptabilité | 2800 | Lyon |
| 3 | Petit | Informatique | 3600 | Paris |
| 4 | Moreau | Marketing | 2500 | Lyon |
| 5 | Leroy | Informatique | 4100 | Nantes |
SELECT : choisir les colonnes
La forme la plus simple sélectionne toutes les colonnes avec l’étoile :
SELECT * FROM employes;
Cela renvoie la table entière. Mais en pratique, on précise les colonnes voulues — c’est plus clair, plus rapide, et plus robuste si la table évolue :
SELECT nom, salaire FROM employes;
Résultat :
| nom | salaire |
|---|---|
| Martin | 3200 |
| Durand | 2800 |
| Petit | 3600 |
| Moreau | 2500 |
| Leroy | 4100 |
Bonne habitude : évitez SELECT * en production. Nommer les colonnes documente votre intention et évite de transférer des données inutiles.
Renommer avec AS
Le mot-clé AS donne un nom d’affichage à une colonne (un alias), utile pour rendre le résultat lisible ou nommer un calcul :
SELECT nom AS employe,
salaire AS remuneration_mensuelle
FROM employes;
Les en-têtes du résultat deviennent employe et remuneration_mensuelle. On peut aussi faire un calcul directement : SELECT nom, salaire * 12 AS salaire_annuel.
WHERE : filtrer les lignes
C’est le cœur du filtrage. WHERE ne conserve que les lignes qui satisfont une condition. Pour les employés de l’Informatique :
SELECT nom, service
FROM employes
WHERE service = 'Informatique';
Résultat :
| nom | service |
|---|---|
| Martin | Informatique |
| Petit | Informatique |
| Leroy | Informatique |
Notez les apostrophes simples autour de 'Informatique' : le texte se met toujours entre quotes simples. Les nombres, non : WHERE salaire = 3200.
Les opérateurs de comparaison
Au-delà de l’égalité, WHERE accepte tous les opérateurs classiques :
| Opérateur | Signification | Exemple |
|---|---|---|
= |
égal | salaire = 3200 |
<> ou != |
différent | service <> 'Marketing' |
> < >= <= |
comparaisons | salaire >= 3000 |
Par exemple, les employés gagnant au moins 3000 € :
SELECT nom, salaire
FROM employes
WHERE salaire >= 3000;
Résultat : Martin (3200), Petit (3600) et Leroy (4100).
Combiner les conditions : AND, OR, NOT
On enchaîne plusieurs conditions avec AND (toutes vraies) et OR (au moins une vraie). Les employés de l’Informatique gagnant plus de 3500 € :
SELECT nom
FROM employes
WHERE service = 'Informatique'
AND salaire > 3500;
Résultat : Petit et Leroy. Attention à la priorité : AND est évalué avant OR. En cas de doute, utilisez des parenthèses pour lever toute ambiguïté :
WHERE (service = 'Informatique' OR service = 'Marketing')
AND ville = 'Lyon';
Les opérateurs pratiques : IN, BETWEEN, LIKE
Trois raccourcis rendent les filtres plus lisibles :
INteste l’appartenance à une liste :WHERE service IN ('Informatique', 'Marketing')— plus court que plusieursOR.BETWEENteste un intervalle (bornes incluses) :WHERE salaire BETWEEN 2800 AND 3600.LIKErecherche un motif dans du texte, avec%(n’importe quelle suite de caractères) et_(un seul caractère) :WHERE nom LIKE 'M%'trouve les noms commençant par M (Martin, Moreau).
Gérer les valeurs NULL
Une valeur NULL signifie « absence de valeur ». Piège classique : on ne la teste pas avec =, mais avec IS NULL / IS NOT NULL :
-- Correct :
WHERE ville IS NULL
-- Ne fonctionne PAS :
WHERE ville = NULL
C’est l’une des erreurs les plus fréquentes chez les débutants : = NULL ne renvoie jamais vrai, même face à une vraie valeur NULL.
Trier le résultat avec ORDER BY
Pour finir, ORDER BY trie l’affichage — ASC (croissant, par défaut) ou DESC (décroissant) :
SELECT nom, salaire
FROM employes
WHERE service = 'Informatique'
ORDER BY salaire DESC;
Résultat : Leroy (4100), Petit (3600), Martin (3200) — du mieux payé au moins payé.
L’ordre des clauses
Une requête de base respecte toujours cet ordre, sous peine d’erreur de syntaxe :
SELECT colonnes
FROM table
WHERE condition
ORDER BY tri;
En résumé
SELECT choisit les colonnes, WHERE filtre les lignes, ORDER BY trie le résultat : ces trois clauses forment le socle de toute interrogation SQL. Retenez les pièges classiques — quotes simples autour du texte, IS NULL pour tester les valeurs absentes, parenthèses pour clarifier AND/OR. Avec ces bases solides, vous êtes prêt à passer aux étapes suivantes : croiser plusieurs tables avec les jointures, et résumer vos données avec GROUP BY.