SQL : La commande WHERE

En langage SQL la commande WHERE permet d’extraire des données à partir de conditions prédéfinies par l’utilisateur. Découvrez des cas concrets !

Mis à jour le
15/5/2024

Dans le royaume sacré des bases de données relationnelles, le SQL fait figure de langage magique. Devenu incontournable de par sa capacité à extraire les secrets les mieux gardés des forteresses obscures et complexes que constituent ces tables de données, beaucoup convoitent sa maîtrise. Mais ce langage est riche et son apprentissage exige patience et rigueur. Parmi toutes les requêtes qui le composent, la maîtrise de la commande WHERE est indispensable. DataBird vous propose aujourd’hui de découvrir tous les secrets de cette commande. Avec à la clé, la possibilité d’extraire de ces bases de données des informations qui feront de vous une figure incontournable de l’analyse de données auprès de pairs.

La commande WHERE : l’extraction de données conditionnelle

Le langage SQL, c’est avant tout un langage qui permet d’interagir avec un système de gestion de bases de données relationnelles (SGBDR). À travers les requêtes que vous exprimez en SQL, il vous est en effet possible de récupérer des tables de données dont la structure et le contenu dépendent de la requête envoyée.

Pour découvrir le langage SQL, suivez notre formation gratuite dédiée !

La commande WHERE est utilisée dans un cas bien précis : n’extraire que certaines lignes d’une table, selon une condition que vous aurez prédéfinie.

De manière théorique, voici comme cette commande est utilisée :

SELECT nom_colonnes FROM nom_table WHERE condition

Si cela vous paraît trop simple, rassurez-vous, nous verrons plus loin dans cet article qu’il existe en réalité diverses conditions que l’on peut combiner.

Mais contentons-nous ! Cela nous offre en réalité une grande flexibilité sur les éléments que l’on souhaite extraire de la base de données.

De manière plus concrète, voici un exemple d’utilisation de cette commande WHERE. Si l’on considère la table suivante, intitulée « entreprises » :

Id Nom Nbr_employes Ville
1 DataBird 20 Paris
2 SQL Corporation 3000 New York
3 SQL Company 2500 Dubaï

Et que l’on exprime la requête suivante à l’aide de la commande WHERE :

SELECT * FROM entreprises WHERE Ville = ‘Paris’

Alors la requête nous renverra la table suivante :

Id Nom Nbr_employes Ville
1 DataBird 20 Paris

Pour rappel, la commande SELECT * est une formule magique du SQL : elle retourne toutes les colonnes du tableau sans avoir besoin de spécifier le nom de toutes les colonnes. Un gain de temps précieux, vous aurez l’occasion de le constater avec la pratique.

Comprendre la commande SQL Where

La commande WHERE et les divers opérateurs de comparaisons

Retroussons nos manches et allons un peu plus loin dans la difficulté : afin d’offrir aux utilisateurs une grande finesse dans l’extraction de données, il existe divers opérateurs de comparaison.

Chacun d’entre eux répond à une logique d’extraction différente. Voici un aperçu des principaux opérateurs :

Opérateur de comparaison Description
= Teste l’égalité
<> ou != Teste l’inégalité
< Inférieur à
> Supérieur à
<= Inférieur ou égal à
>= Supérieur ou égal à
IN Spécifie plusieurs valeurs possibles d’une
colonne
BETWEEN Valeurs pouvant être comprises dans un certain
intervalle spécifié par l’utilisateur (uniquement
applicable aux nombres ou dates)
LIKE Recherche d’un pattern dans une chaîne de
caractères
IS NULL Valeur nulle
IS NOT NULL Valeur non nulle

Mise en pratique de ces opérateurs de comparaison

Pour rendre l’utilisation de ces opérateurs plus concrète (et enfin passer à la pratique), voici quelques exemples plus parlants !

Tous ces exemples s'appuient sur la table suivante, intitulée ‘entreprises’ :

Id Nom Nbr_employes Ville Date_creation
1 DataBird 20 Paris 2020-01-01
2 SQL Corporation 3000 New York 1974-03-15
3 SQL Company 2500 Dubaï 1986-08-11
4 Python Corp. 10 000 New York 1991-12-28
5 SQL Père & Fils 7 Limoges 1997-02-08
6 SGBDR Factory 250 Bangkok 2009-12-17

Opérateurs « > » et « < ».

L’utilisation de ces opérateurs est assez intuitive. Considérons la requête suivante, qui permet d’extraire les données sur les entreprises de (strictement) plus de 3 000 employés :

SELECT * FROM entreprises WHERE Nbr_employes > 3000

Tu l’auras sans doute anticipé, on obtient le résultat suivant :

Id Nom Nbr_employes Ville Date_creation
4 Python Corp. 10 000 New York 1991-12-28

À noter que si l’on avait émis la requête avec l’opérateur « >= » (c’est-à-dire qu’on souhaite identifier les entreprises de 3 000 employés ou plus) :

SELECT * FROM entreprises WHERE Nbr_employes >= 3000

On aurait obtenu la table suivante :

Id Nom Nbr_employes Ville Date_creation
2 SQL Corporation 3000 New York 1974-03-15
4 Python Corp. 10 000 New York 1991-12-28

Une petite subtilité qui peut changer beaucoup de choses au final.



Opérateur « IN »

Comprendre comment utiliser la commande SQL Where

L’opérateur IN permet d’extraire des lignes en vérifiant que la valeur d’une colonne est comprise dans un éventail de valeurs spécifiées par l’utilisateur.

Ainsi, la requête suivante permet de sélectionner les entreprises basées à New York ou Limoges :

SELECT * FROM entreprises WHERE Ville IN (‘New York’, ‘Limoges’)

On récupère la table suivante :

Id Nom Nbr_employes Ville Date_creation
2 SQL Corporation 3000 New York 1974-03-15
4 Python Corp. 10 000 New York 1991-12-28
5 SQL Père & Fils 7 Limoges 1997-02-08

Pour ceux qui se le demandent, soulignons qu’il n’y a pas de limites au nombre d’arguments passés avec l’opérateur IN.

De manière symétrique, on peut utiliser l’opérateur NOT IN qui permet de ne sélectionner que les lignes dont l’une des colonnes ne fait pas partie d’une liste d’arguments spécifiée par l’utilisateur.

Ainsi, si l’on souhaite identifier les entreprises qui ne sont pas basées à New York, Paris ou Dubaï :

SELECT * FROM entreprises WHERE Ville NOT IN (‘New York’, ‘Paris’, ‘Dubaï’)

Ce qui nous renverra la table suivante :

Id Nom Nbr_employes Ville Date_creation
5 SQL Père & Fils 7 Limoges 1997-02-08
6 SGBDR Factory 250 Bangkok 2009-12-17

Opérateur « BETWEEN »

L’opérateur BETWEEN est particulièrement utile lorsque vous cherchez à identifier les lignes dont la valeur d’une colonne appartient à un certain intervalle. L’intervalle peut porter sur des nombres, mais également sur des dates.

Ainsi, si l’on cherche les entreprises composées de 1 000 à 5 000 employés, on réalisera la requête suivante :

SELECT * FROM entreprises WHERE Nbr_employes BETWEEN 1000 AND 5000

On obtiendra dans notre cas :

Id Nom Nbr_employes Ville Date_creation
2 SQL Corporation 3000 New York 1974-03-15
3 SQL Company 2500 Dubaï 1986-08-11

De même, si l’on cherche à identifier les entreprises créées entre le 1er janvier 1990 et le 1er janvier 2010, on peut faire la requête suivante :

SELECT * FROM entreprises WHERE Date_creation BETWEEN 1990-01-01 AND 2010-01-01

On extrait alors la table suivante :

Id Nom Nbr_employes Ville Date_creation
4 Python Corp. 10 000 New York 1991-12-28
5 SQL Père & Fils 7 Limoges 1997-02-08
6 SGBDR Factory 250 Bangkok 2009-12-17

Opérateur « LIKE »

Comprendre en détail la commande SQL Where

L’opérateur LIKE permet de spécifier une condition sur une chaîne de caractères. Vous pouvez l’utiliser sous différentes formes. Celles-ci permettent d’identifier les lignes dont l’attribut d’une colonne :

  • commence par une certaine lettre ou groupe de lettres ;
  • se termine par une certaine lettre ou groupe de lettres ;
  • contient un certain groupe de lettres.

Bref, cet opérateur est extrêmement utile pour rechercher des informations par rapport à une chaîne de caractère dont vous ne connaissez pas exactement l’orthographe. Ci-dessous, quelques exemples pour comprendre les cas d’utilisation de cet opérateur.

On peut chercher à identifier les entreprises dont le nom commence par SQL. Dans ce cas, il faudra utiliser la requête suivante :

SELECT * FROM entreprises WHERE Nom LIKE ‘SQL%’

La requête renvoie alors :

Id Nom Nbr_employes Ville Date_creation
2 SQL Corporation 3000 New York 1974-03-15
3 SQL Company 2500 Dubaï 1986-08-11
5 SQL Père & Fils 7 Limoges 1997-02-08

À noter que dans le cadre de l’utilisation de cet opérateur, le caractère « % » remplace tous les autres caractères. On peut donc l’utiliser pour rechercher les entreprises dont le nom se termine par « Corporation », grâce à la requête suivante :

SELECT * FROM entreprises WHERE Nom LIKE ‘%Corporation’

On obtient alors :

Id Nom Nbr_employes Ville Date_creation
2 SQL Corporation 3000 New York 1974-03-15

Suivant cette même logique, on peut utiliser l’opérateur LIKE pour diverses opérations :

-        Rechercher une chaîne de caractère qui contient un caractère ou un groupe de caractères avec LIKE %exemple% si l’on cherche les chaînes de caractères qui contiennent « exemple ».

-        Rechercher une chaîne de caractère qui commence et se termine avec un certain groupe de caractère avec LIKE Ex%ple si l’on cherche les chaînes de caractères qui commencent par « Ex » et terminent par « ple ».

Plus d’informations sur cet opérateur LIKE sur le site SQL.

 {{banniere-article}}

Opérateur « IS NULL »

Il est possible que les bases de données que vous manipulez contiennent des champs vides. L’opérateur IS NULL teste pour une ligne donnée si la valeur d’une colonne est vide.

Inversement, l’opérateur IS NOT NULL vous permet de ne sélectionner que les lignes pour lesquelles le champ de la colonne étudiée est bien rempli.

Ainsi si l’on considère la table suivante, intitulée « company » :

Id Nom Nbr_employes Ville Date_creation
1 DataBird 20 2020-01-01
2 SQL Corporation 3000 New York 1974-03-15
3 SQL Company 2500 1986-08-11
4 Python Corp. 10 000 New York 1991-12-28

On peut chercher à extraire uniquement les lignes pour lesquelles le champ ‘Ville’ a bien été rempli. La requête associée est donc :

SELECT * FROM company WHERE Ville IS NOT NULL

On obtient alors :

Id Nom Nbr_employes Ville Date_creation
2 SQL Corporation 3000 New York 1974-03-15
4 Python Corp. 10 000 New York 1991-12-28

Nota bene : Une valeur NULL est différente d’un zéro ou même d’un champ contenant une chaîne de caractère constituée d’espace. Il s’agit d’un champ qui n’a pas été rempli.

Pour aller plus loin, découvrez nos bootcamps, formations intensives pour acquérir toutes les compétences nécessaires et développer votre réseau dans la data !

Point de vigilance sur la commande WHERE

De nombreux débutants (dont vous ne ferez plus partie à la fin de cet article) commettent des erreurs liées à une confusion entre les commandes WHERE et HAVING. Cette dernière est en réalité utilisée pour réaliser un conditionnement après la réalisation d’une agrégation (avec la commande GROUP BY).

Ceci étant dit, vous n'aurez plus d’excuses si vous faites cette erreur !

Pour plus d’information sur cette erreur fréquente, n'hésitez pas à consulter un descriptif de la fonction HAVING.

Conclusion

Grâce à cette commande WHERE, vous êtes désormais en mesure d’interagir avec des bases de données, qui commencent progressivement à livrer leurs premiers secrets.

Certes, les requêtes sont encore un peu basiques, mais patience ! Cette commande est une première étape vers l’élaboration de requêtes plus complexes. Envie d’aller plus loin ? Formez-vous en ligne au langage SQL dans son ensemble.

Vous êtes pressé et vous vous sentez déjà prêt à aller plus loin ? Découvrez dès maintenant notre offre de formation complète.

Rejoignez-nous pour notre Journée Portes Ouvertes en live le 27 juin à 18h30
Explorez le bootcamp Databird ainsi que nos programmes de formation data.
Je m'inscris à l'évènement
Faites un premier pas dans la data avec nos cours gratuits
Démarrer

Nos derniers articles sur

SQL

Pour préparer l’année 2024, Databird vous propose une petite révision sur le requêtage SQL. Voici 6 requêtes à connaître obligatoirement en 2024 pour coder en SQL.
Le monde de la data vous intéresse et vous souhaitez en savoir plus ? Découvrez le langage SQL et ses applications dans l’exploitation de base de données.
Le NoSQL est une des bases de données les plus utilisées dans le Big Data. Sa simplicité et sa flexibilité en font un outil puissant pour les Data Analysts.
Difficulté :