TOP

SQL-Leçon 4. Filtrage des données (WHERE)

Dans la plupart des cas, il est nécessaire de recevoir non pas tous les enregistrements, mais uniquement ceux qui répondent à certains critères. C'est pourquoi il existe un opérateur spécial WHERE dans SQL pour le filtrage d'échantillonnage.


1. Filtrage simple par l'opérateur WHERE.

Sélectionnons dans notre tableau, par exemple, les enregistrements qui concernent uniquement un certain produit. Pour ce faire, nous spécifions un paramètre de sélection supplémentaire qui filtrera les valeurs par la colonne Produit.

Un exemple de requête pour sélectionner des valeurs de texte :

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

Comme vous pouvez le constater, la condition de sélection est entourée de guillemets simples, ce qui est obligatoire lors du filtrage des valeurs de texte. Les guillemets ne sont pas requis lors du filtrage des valeurs numériques.

Un exemple de requête de sélection de valeurs numériques :

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

Dans cet exemple, nous avons sélectionné les enregistrements dans lesquels le chiffre d'affaires était supérieur à 40 000 $ et, en outre, avons trié tous les enregistrements par ordre croissant en fonction du champ Montant.

Le tableau ci-dessous répertorie les instructions conditionnelles prises en charge par SQL :

Знак операції Значення
= Дорівнює
<> Не дорівнює
< Менше
<= Менше або рівне
> Більше
>= Більше або рівне
BETWEEN Між двома значеннями
IS NULL Відсутній запис

2. Filtrage par plage de valeurs (BETWEEN)

L'opérateur BETWEEN est utilisé pour sélectionner des données qui se situent dans une certaine plage. Dans la requête suivante, toutes les valeurs comprises entre 1 000 $ et 2 000 $ inclus dans le champ Montant seront sélectionnées.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

L'ordre de tri dépendra de l'ordre des champs dans la requête. Autrement dit, dans notre cas, les données seront d'abord triées par la colonne Montant, puis par City.

3. Sélection d'enregistrements vides (IS NULL)

En SQL, il existe un opérateur spécial pour sélectionner des enregistrements vides (appelé NULL). Une entrée vide est une cellule du tableau dans laquelle aucun caractère n'est saisi. Si 0 ou un espace est saisi dans la cellule, on considère que le champ est rempli.

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

Dans l'exemple ci-dessus, nous avons intentionnellement supprimé deux valeurs dans le champ Montant pour démontrer l'opérateur NULL.

4. Filtrage avancé (AND, OR)

Le langage SQL ne se limite pas au filtrage selon une seule condition ; pour vos propres besoins, vous pouvez utiliser des constructions assez complexes pour sélectionner des données simultanément selon de nombreux critères. Pour cela, SQL dispose d'opérateurs supplémentaires qui étendent les capacités de l'opérateur WHERE. Ces opérateurs sont : AND, OR, IN, NOT. Nous donnerons plusieurs exemples de fonctionnement de ces opérateurs.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

Combinons les opérateurs AND et OR. Pour ce faire, nous ferons une sélection de vélos (Bikes) et de patins (Skates), qui ont été vendus en mars.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

Nous constatons que de nombreuses valeurs ont été incluses dans notre échantillon (en plus de mars, également janvier, février et avril). Quelle est la raison? Et le fait que SQL a des priorités d'exécution des commandes. Autrement dit, l'opérateur AND a une priorité plus élevée que l'opérateur OR, donc les enregistrements avec des patins vendus en mars ont été sélectionnés en premier, suivis de tous les enregistrements liés aux vélos.

Ainsi, pour obtenir le bon échantillonnage, nous devons modifier les priorités d’exécution des commandes. Pour cela, nous utiliserons des parenthèses, comme en mathématiques. Ensuite, les opérateurs entre parenthèses seront traités en premier, puis tout le reste.

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. Filtrage avancé (opérateur IN)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

L'opérateur IN remplit la même fonction que OR, mais présente plusieurs avantages :

  • Lorsque vous travaillez avec de longues listes, les phrases avec IN sont plus faciles à lire ;
  • Moins d'opérateurs sont utilisés, ce qui accélère le traitement des demandes ;
  • L'avantage le plus important de IN est que dans sa construction, vous pouvez utiliser la construction supplémentaire SELECT, qui
  • відкриває великі можливості для створення складних підзапитів.

    6. Filtrage avancé (opérateur NOT)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    Le mot-clé NOT vous permet de supprimer les valeurs inutiles de l'échantillon. De plus, sa particularité est qu'il est placé avant le nom de la colonne impliquée dans le filtrage, et non après.