Construire une base de données relationnelle

Partie 5
Chapitre 2 sur 8
Partie 5 – Exploiter et joindre des données avec SQL

Instruction WHERE

Maintenant que nous savons récupérer des données d’une table, que nous savons les ordonner, il faut savoir comment choisir ces données, comment les filtrer.

L’instruction WHERE est la façon de ‘filtrer’ le résultat d’une requête SQL.

Pour ce faire, WHERE est suivie d’une ou plusieurs conditions booléennes. Nous récupérons le résultat de la requête si et seulement si le résultat de la condition est TRUE.

SELECT <attribut1, attribut2, …, attribut N>
FROM <table>
WHERE <condition1>
AND/OR <condition2>
ORDER BY <attribut N> DESC;

 

Exemple

Si nous souhaitons récupérer uniquement les lignes où :

-les valeurs de ‘NO2 Value’ sont comprises entre 50 et 100 ou les valeurs de ‘O3 Value’ sont strictement supérieures à 10.
-la station est ‘Barcelona – Eixample’,

SELECT *
FROM air_quality
WHERE ("NO2 Value" BETWEEN 50 AND 100
OR "O3 Value" > 10)
AND "station" = 'Barcelona - Eixample'
ORDER BY "NO2 Value";

NB : Dans notre exemple, nous souhaitons récupérer les valeurs de NO2 comprises entre 50 et 100 OU les valeurs de O3 strictement supérieures à 10. Pour cela, il est essentiel de mettre entre parenthèse ces deux conditions, sinon la dernière condition ne sera pas correctement prise en compte. En effet, il existe une priorité des opérations comme en mathématiques :

OR ~= addition
AND ~= multiplication

La porte logique AND a une priorité sur OR.

Mathématiquement, nous souhaitons avoir (A + B) x C et non A + B x C.