Bon, on sait déjà comment utiliser la commande SELECT. Enfin, au moins, on a appris à extraire des données de la base, à choisir les colonnes qu'on veut et à écrire des requêtes qui commencent à transformer des données brutes en infos utiles. Il est temps d'ajouter un peu de "filtres" à notre palette magique. Ouais, aujourd'hui on va parler du filtrage des données avec des opérateurs de comparaison comme =, >, < et <>.
Quand tu bosses avec de grosses tables, t'as sûrement pas envie de tout regarder (sauf si tu veux plonger dans le chaos). Pour ne sortir que les lignes qui t'intéressent, en SQL on utilise le mot-clé WHERE. Ça permet de poser des conditions que chaque ligne doit remplir pour apparaître dans les résultats de la requête. Et pour ces conditions, on utilise les opérateurs de comparaison.
Syntaxe du filtrage avec WHERE
SELECT colonne1, colonne2
FROM table
WHERE condition;
Structure simple : on ajoute le mot WHERE après avoir indiqué la table avec FROM et on écrit la condition précise que les lignes doivent respecter.
Par exemple, regardons comment extraire des données de la table students :
SELECT name, age
FROM students
WHERE age > 18;
Cette requête sélectionne seulement les étudiants (noms et âges) qui ont plus de 18 ans. Facile, non ? Maintenant, plongeons dans le monde des opérateurs de comparaison.
Les opérateurs de comparaison principaux
En SQL, il y a plusieurs opérateurs de comparaison qui vont t'aider à filtrer les données comme tu veux. Tu les connais sûrement déjà en maths, mais faut préciser un peu comment ça marche ici. Voilà la liste des plus utilisés :
=— Égal.<>— Différent (alternative :!=dans certains SGBD, mais mieux vaut utiliser<>, c'est le standard SQL).>— Supérieur.<— Inférieur.>=— Supérieur ou égal.<=— Inférieur ou égal.
Tableau des opérateurs de comparaison
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
= |
Égal | age = 20 |
Renvoie les lignes où l'âge est 20 |
<> |
Différent | age <> 20 |
Renvoie les lignes où l'âge est différent de 20 |
> |
Supérieur | age > 18 |
Renvoie les lignes où l'âge est supérieur à 18 |
< |
Inférieur | age < 18 |
Renvoie les lignes où l'âge est inférieur à 18 |
>= |
Supérieur ou égal | age >= 18 |
Renvoie les lignes où l'âge est 18 ou plus |
<= |
Inférieur ou égal | age <= 18 |
Renvoie les lignes où l'âge est 18 ou moins |
Exemples d'utilisation des opérateurs de comparaison
Exemple 1 : Extraire les étudiants de plus de 20 ans
Voilà notre table :
| id | name | age |
|---|---|---|
| 1 | Alex Lin | 22 |
| 2 | Anna Song | 19 |
| 3 | Otto Art | 21 |
SELECT name, age
FROM students
WHERE age > 20;
Ici on pose la condition age > 20 pour ne sélectionner que les étudiants dont l'âge dépasse 20. Si dans la table il y a un étudiant de 19 ans, désolé, il ne sera pas dans les résultats.
Dans notre cas, on aura ce résultat :
| name | age |
|---|---|
| Alex Lin | 22 |
| Otto Art | 21 |
L'étudiante Anna Song n'est pas dans la sélection, parce qu'elle n'a que 19 ans.
Exemple 2 : Extraire les employés avec un salaire d'au moins 50 000
Voici notre table employees :
| first_name | last_name | salary |
|---|---|---|
| Julia | Kim | 48000 |
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Et voilà notre requête SQL :
SELECT first_name, last_name, salary
FROM employees
WHERE salary >= 50000;
Cette requête va renvoyer tous les employés qui ont un salaire égal à 50 000 ou supérieur à ce montant. L'égalité marche aussi !
| first_name | last_name | salary |
|---|---|---|
| Marcus | Lee | 52000 |
| Anya | Patel | 50000 |
| Ethan | Zhou | 61000 |
Exemple 3 : Extraire les produits avec un prix inférieur à 100
| product_name | price |
|---|---|
| USB Cable | 85 |
| Wireless Mouse | 150 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
SELECT product_name, price
FROM products
WHERE price < 100;
Si tu as une boutique en ligne, avec cette requête tu peux sortir tous les produits à moins de 100 (genre pour une promo "Tout à 99 !").
| product_name | price |
|---|---|
| USB Cable | 85 |
| Notebook | 60 |
| Mechanical Pencil | 45 |
Exemple 4 : Exclure les utilisateurs avec un certain id
SELECT id, username
FROM users
WHERE id <> 1;
Cette requête sélectionne tous les utilisateurs sauf celui dont id vaut 1. L'opérateur <> dit "donne-moi tous ceux qui ne sont pas égaux à cette valeur".
Table users :
| id | username |
|---|---|
| 1 | admin |
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Résultat de la requête :
| id | username |
|---|---|
| 2 | elena.gray |
| 3 | tom.bishop |
| 4 | aria.noble |
Erreurs classiques lors du filtrage avec les opérateurs de comparaison
Quand tu commences à écrire des requêtes avec des filtres, tu vas sûrement faire des erreurs. Voilà quelques cas fréquents à garder en tête :
Problème 1 : Erreur dans le nom des colonnes
Si tu écris mal le nom d'une colonne dans ta requête, PostgreSQL va te sortir une erreur. Par exemple :
SELECT name, age
FROM students
WHERE ages > 18; -- Erreur : la colonne "ages" n'existe pas
Pense toujours à vérifier les noms exacts des colonnes avant d'écrire ta requête.
Problème 2 : Mauvaise utilisation de l'opérateur de comparaison
Parfois, les débutants se trompent d'opérateur. Par exemple :
SELECT name, age
FROM students
WHERE age => 18; -- Erreur : opérateur invalide
La bonne syntaxe c'est >=, pas =>.
Problème 3 : Filtrer sur des valeurs qui n'existent pas
Si tu essaies de filtrer sur une valeur qui n'existe pas dans la table, la requête va marcher mais renverra un résultat vide. Par exemple :
SELECT name
FROM students
WHERE age = 999; -- Résultat : 0 lignes
Ce n'est pas une erreur de syntaxe, mais ça peut être perturbant si tu t'attends à voir des données.
Utilisation pratique
Le filtrage des données avec les opérateurs de comparaison sert dans plein de cas :
- Analyse de données : par exemple, pour sélectionner tous les clients qui ont dépensé plus de 10 000 roupies.
- Rapports : sélectionner les employés avec un salaire au-dessus de la moyenne.
- Monitoring : suivre les utilisateurs qui n'ont pas été actifs le mois dernier.
SQL te permet d'extraire vite fait les données dont t'as besoin dans des grosses tables, et les opérateurs de comparaison, c'est le premier pas sur ce chemin.
GO TO FULL VERSION