Techniques de filtrage avancé des données en SQL

En SQL, le filtrage avancé des données repose sur l'utilisation d'opérateurs logiques pour combiner ou modifier les conditions dans la clause WHERE, permettant ainsi des requêtes plus précises.

Utilisation combinée des opérateurs AND et OR

L'opérateur AND exige que toutes les conditions spécifiées soient vraies pour inclure une ligne dans les résultats. Pour filtrer sur plusieurs colonnes, chaque condition doit être reliée par AND :

SELECT id_article, prix, intitule FROM Produits WHERE code_fournisseur = 'FRN01' AND prix <= 5;

L'opérateur OR retourne les lignes qui satisfont au moins l'une des conditions. Par exemple, pour sélectionner des articles de différents fournisseurs :

SELECT intitule, prix FROM Produits WHERE code_fournisseur = 'FRN01' OR code_fournisseur = 'FRN02';

Priorité d'évaluation

Lorsque AND et OR sont mélangés dans une clause WHERE, l'ordre de priorité est : parenthèses > AND > OR. L'ajout de parenthèses clarifie l'intention et évite les erreurs. Comparez ces requêtes :

SELECT intitule, prix FROM Produits WHERE code_fournisseur = 'FRN01' OR code_fournisseur = 'FRN02' AND prix >= 10;
SELECT intitule, prix FROM Produits WHERE (code_fournisseur = 'FRN01' OR code_fournisseur = 'FRN02') AND prix >= 10;

La première requête inclut tous les articles du fournisseur 'FRN01' ou ceux du fournisseur 'FRN02' avec un prix d'au moins 10. La seconde, avec parenthèses, ne sélectinone que les articles des deux fourinsseurs ayant un prix d'au moins 10.

L'opérateur IN pour les plages de valeurs

L'opérateur IN spécifie une liste de valeurs acceptables entre parenthèses, offrant une alternative plus lisible et performante à OR. Il peut aussi intégrer des sous-requêtes pour une construction dynamique :

SELECT intitule, prix FROM Produits WHERE code_fournisseur IN ('FRN01', 'FRN02') ORDER BY intitule;

Cette requête est fonctionnellement équivalente à :

SELECT intitule, prix FROM Produits WHERE code_fournisseur = 'FRN01' OR code_fournisseur = 'FRN02' ORDER BY intitule;

Négation avec l'opérateur NOT

L'opérateur NOT inverse la condition qui le suit, agissant comme une négation logique. Il peut remplacer des opérateurs d'inégalité comme != dans certains cas :

SELECT intitule FROM Produits WHERE NOT code_fournisseur = 'FRN01' ORDER BY intitule;

Cette requête retourne tous les articles sauf ceux du fournisseur 'FRN01'. Le même résultat peut être obtenu avec :

SELECT intitule FROM Produits WHERE code_fournisseur <> 'FRN01' ORDER BY intitule;

Étiquettes: SQL filtrage de données opérateurs logiques clause WHERE IN

Publié le 18 juin à 16h46