Skip to content

Latest commit

 

History

History
166 lines (130 loc) · 5.18 KB

File metadata and controls

166 lines (130 loc) · 5.18 KB

WHERE - Filtrer les résultats

L'Objectif : Poser des questions précises

SELECT * FROM vehicules; nous donne tout, sans distinction. Mais la plupart du temps, nous cherchons des données qui répondent à des critères spécifiques.

La clause WHERE agit comme un filtre. Elle permet de ne conserver que les lignes qui respectent une ou plusieurs conditions que l'on définit.

La Syntaxe de Base

On ajoute la clause WHERE juste après FROM.

SELECT colonnes
FROM nom_de_la_table
WHERE condition(s);

Une condition est une expression qui est soit vraie, soit fausse pour chaque ligne (par exemple, annee > 2021).

Le Contexte : Notre table vehicules

Pour illustrer les filtres, nous ajoutons quelques lignes à notre table, dont une avec un prix non défini (NULL).

id marque modele annee prix
1 Renault Clio 2021 22000
2 Peugeot 208 2022 24000
3 Citroën C3 2021 21500
4 Renault Arkana 2023 32000
5 Tesla Model 3 2022 45000
6 Peugeot 2008 2023 28000
7 Dacia Spring 2022 NULL

Cas d'Usage

1. Filtrer avec des opérateurs de comparaison

On peut utiliser les opérateurs classiques pour filtrer des nombres, des textes ou des dates. (=, >, <, >=, <=, <> ou !=)

Requête : (On cherche tous les véhicules de la marque "Renault")

SELECT * FROM vehicules
WHERE marque = 'Renault';```
*Note : Le texte doit être entre guillemets simples `'`.*

**Résultat :**
| id | marque | modele | annee | prix |
|:---|:---|:---|:---|:---|
| 1 | Renault | Clio | 2021 | 22000 |
| 4 | Renault | Arkana | 2023 | 32000 |

**Requête :** (Les véhicules dont le prix est supérieur à 30000)
```sql
SELECT marque, modele, prix FROM vehicules
WHERE prix > 30000;

Résultat :

marque modele prix
Renault Arkana 32000
Tesla Model 3 45000

2. Combiner des conditions (AND, OR)

  • AND : Les deux conditions doivent être vraies.
  • OR : Au moins une des deux conditions doit être vraie.

Requête : (Les véhicules "Peugeot" de l'année 2023)

SELECT * FROM vehicules
WHERE marque = 'Peugeot' AND annee = 2023;

Résultat :

id marque modele annee prix
6 Peugeot 2008 2023 28000

Requête : (Les véhicules de 2021 ou dont le prix est inférieur à 22000)

SELECT * FROM vehicules
WHERE annee = 2021 OR prix < 22000;

Résultat :

id marque modele annee prix
1 Renault Clio 2021 22000
3 Citroën C3 2021 21500

3. Filtrer sur des intervalles (BETWEEN) et des listes (IN)

  • BETWEEN : Simplifie la recherche dans une plage de valeurs (inclusives).
  • IN : Vérifie si une valeur fait partie d'une liste.

Requête : (Les véhicules dont le prix est compris entre 20000 et 25000 euros)

SELECT marque, modele, prix FROM vehicules
WHERE prix BETWEEN 20000 AND 25000;

Résultat :

marque modele prix
Renault Clio 22000
Peugeot 208 24000
Citroën C3 21500

Requête : (Les véhicules de marque "Renault" ou "Citroën")

SELECT * FROM vehicules
WHERE marque IN ('Renault', 'Citroën');

Résultat :

id marque modele annee prix
1 Renault Clio 2021 22000
3 Citroën C3 2021 21500
4 Renault Arkana 2023 32000

4. Filtrer sur des motifs de texte (LIKE)

LIKE est utilisé pour rechercher des chaînes de caractères qui correspondent à un certain motif.

  • % : Remplace n'importe quelle séquence de zéro, un ou plusieurs caractères.
  • _ : Remplace un seul caractère.

Requête : (Les modèles qui commencent par la lettre 'C')

SELECT modele FROM vehicules
WHERE modele LIKE 'C%';

Résultat :

modele
Clio
C3

5. Gérer les valeurs nulles (IS NULL)

Pour filtrer les lignes où une valeur est absente, on ne peut pas utiliser = NULL. La syntaxe correcte est IS NULL (ou IS NOT NULL pour l'inverse).

Requête : (Le véhicule dont le prix n'est pas renseigné)

SELECT * FROM vehicules
WHERE prix IS NULL;

Résultat :

id marque modele annee prix
7 Dacia Spring 2022 NULL

En Bref

Opérateur Rôle Exemple
WHERE Clause principale pour filtrer les lignes. WHERE annee = 2023
=, >, <> Opérateurs de comparaison de base. WHERE prix > 25000
AND Combine des conditions (toutes doivent être vraies). WHERE marque = 'A' AND prix < 100
OR Combine des conditions (au moins une doit être vraie). WHERE marque = 'A' OR marque = 'B'
BETWEEN Vérifie si une valeur est dans une plage inclusive. WHERE prix BETWEEN 100 AND 200
IN Vérifie si une valeur est dans une liste. WHERE marque IN ('A', 'B', 'C')
LIKE Recherche un motif dans du texte. WHERE modele LIKE 'Model %'
IS NULL Vérifie si une valeur est nulle (absente). WHERE prix IS NULL