Accéder au contenu principal

Introduction à la clause WHERE en SQL

Dans ce tutoriel, vous découvrirez comment filtrer des lignes en SQL à l’aide de la clause WHERE.
Actualisé 19 sept. 2026  · 7 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

Filtrer les lignes d’une table selon une condition (ou un ensemble de conditions) est une pratique courante en analyse de données. En SQL, vous pouvez le faire avec la clause where. Dans ce tutoriel, vous l’utiliserez dans plusieurs scénarios.

Vous utiliserez PostgreSQL comme SGBDR (système de gestion de base de données relationnelle), mais la syntaxe varie peu avec d’autres systèmes. Vous commencerez par configurer une base PostgreSQL et créer manuellement une table contenant des données sur des pays. Une fois en place, vous exécuterez plusieurs requêtes de filtrage intégrant la clause WHERE.

Remarque : pour suivre ce tutoriel, vous devez connaître les bases de SQL et de PostgreSQL. Les ressources suivantes peuvent vous aider si ce n’est pas le cas.

Créer une table dans PostgreSQL

Pour suivre ce tutoriel, vous devez créer une table dans PostgreSQL qui contient des informations sur des pays du monde. Cette table servira à montrer le fonctionnement de la clause WHERE dans différents cas.

Étape 1 : créer une nouvelle base

Ouvrez pgAdmin (ou votre interface SQL préférée) et créez une nouvelle base PostgreSQL. Vous pouvez la nommer par exemple world_data ou tout autre nom de votre choix.

Étape 2 : créer et alimenter la table

Une fois la base prête, ouvrez un nouvel éditeur de requêtes SQL et exécutez le code ci-dessous. Il crée une table nommée countries et insère un jeu d’enregistrements couvrant un large éventail de continents, d’années d’indépendance et de régions :

-- Create the countries tableCREATE TABLE countries (    code VARCHAR(3) PRIMARY KEY,    name VARCHAR(100),    continent VARCHAR(50),    region VARCHAR(100),    surface_area NUMERIC,    indep_year INTEGER,    local_name VARCHAR(100),    gov_form VARCHAR(100),    capital VARCHAR(100),    cap_long NUMERIC,    cap_lat NUMERIC);-- Insert sample data into the countries tableINSERT INTO countries (code, name, continent, region, surface_area, indep_year, local_name, gov_form, capital, cap_long, cap_lat)VALUES('IND', 'India', 'Asia', 'Southern Asia', 3287263, 1947, 'Bharat', 'Federal Republic', 'New Delhi', 77.2090, 28.6139),('PAK', 'Pakistan', 'Asia', 'Southern Asia', 881912, 1947, 'Pakistan', 'Federal Republic', 'Islamabad', 73.0551, 33.6844),('CHN', 'China', 'Asia', 'Eastern Asia', 9596961, NULL, 'Zhongguo', 'People''s Republic', 'Beijing', 116.4074, 39.9042),('VNM', 'Vietnam', 'Asia', 'South-Eastern Asia', 331212, 1945, 'Việt Nam', 'Socialist Republic', 'Hanoi', 105.8544, 21.0285),('JPN', 'Japan', 'Asia', 'Eastern Asia', 377975, NULL, 'Nippon', 'Constitutional Monarchy', 'Tokyo', 139.6917, 35.6895),('DEU', 'Germany', 'Europe', 'Western Europe', 357386, 1955, 'Deutschland', 'Federal Republic', 'Berlin', 13.4050, 52.5200),('FRA', 'France', 'Europe', 'Western Europe', 551695, 843, 'France', 'Republic', 'Paris', 2.3522, 48.8566),('RUS', 'Russia', 'Europe', 'Eastern Europe', 17098242, 1991, 'Rossiya', 'Federation', 'Moscow', 37.6173, 55.7558),('UKR', 'Ukraine', 'Europe', 'Eastern Europe', 603500, 1991, 'Ukrayina', 'Republic', 'Kyiv', 30.5234, 50.4501),('EGY', 'Egypt', 'Africa', 'Northern Africa', 1002450, 1922, 'Misr', 'Republic', 'Cairo', 31.2357, 30.0444),('NGA', 'Nigeria', 'Africa', 'Western Africa', 923768, 1960, 'Nigeria', 'Federal Republic', 'Abuja', 7.4951, 9.0578),('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', 7682300, 1901, 'Australia', 'Federal Parliamentary Democracy', 'Canberra', 149.1245, -35.3075),('USA', 'United States', 'North America', 'North America', 9833517, 1776, 'United States', 'Federal Republic', 'Washington, D.C.', -77.0369, 38.9072),('CAN', 'Canada', 'North America', 'North America', 9984670, 1867, 'Canada', 'Constitutional Monarchy', 'Ottawa', -75.6972, 45.4215),('BRA', 'Brazil', 'South America', 'South America', 8515767, 1822, 'Brasil', 'Federal Republic', 'Brasília', -47.9292, -15.7801),('ARG', 'Argentina', 'South America', 'South America', 2780400, 1816, 'Argentina', 'Federal Republic', 'Buenos Aires', -58.3816, -34.6037);

La table contient différentes informations pour environ 16 pays dans le monde. Elle comprend les colonnes suivantes :

  • code clé primaire de la table, correspondant au code pays universel

  • name c’est-à-dire le nom du pays

  • continent auquel le pays appartient

  • region la zone géographique où se situe le pays

  • surface_area la superficie du pays

  • indep_year c’est-à-dire l’année d’indépendance du pays

  • local_name le nom local du pays

  • gov_form c’est-à-dire le type de régime en place

  • capital la capitale du pays

  • cap_long c’est-à-dire la longitude de la capitale

  • cap_lat c’est-à-dire la latitude de la capitale

Passons maintenant au filtrage d’enregistrements avec la clause WHERE.

Utiliser la clause WHERE en SQL

En SQL, la clause WHERE permet de filtrer des enregistrements sur des valeurs textuelles comme numériques. Vous pouvez comparer ces valeurs, et les opérations suivantes sont prises en charge :

  • = égal

  • <> et != différent

  • < inférieur à

  • > supérieur à

  • <= inférieur ou égal à

  • >= supérieur ou égal à

Il est recommandé d’utiliser <> plutôt que != conformément aux standards SQL.

Récupérons maintenant l’enregistrement du pays dont le code est AUS. La colonne à comparer est code et la valeur de comparaison est AUS. La requête sera :

SELECT * FROM countries WHERE code = 'AUS';

Et vous obtenez :

À noter :

  • La clause WHERE vient toujours après FROM.

  • En SQL, les chaînes de caractères sont délimitées par des apostrophes.

Voyons maintenant une comparaison numérique. Récupérons les pays qui ont obtenu leur indépendance (indep_year) après 1901 :

SELECT * FROM countries WHERE indep_year > 1901;

Vous obtenez au total 3 pays ayant obtenu leur indépendance après 1901. Remarquez le comparateur utilisé. La colonne indep_year est de type entier. Il n’y a donc pas de guillemets dans la comparaison.

Vous pouvez combiner plusieurs conditions dans une clause WHERE avec les connecteurs AND et OR. La requête suivante renvoie les pays where continent = 'Asia' and indep_year > 1900 :

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901;

Vous obtenez des informations sur trois pays situés en Asia et ayant obtenu leur indépendance après 1901. Notez que dans la requête ci‑dessus, vous comparez à la fois des valeurs textuelles et numériques. À vous d’expérimenter avec différentes combinaisons de AND et OR dans la clause WHERE.

Remarque : lorsque vous combinez AND et OR, n’oubliez pas d’englober chaque condition entre parenthèses. Sinon, SQL pourrait mal interpréter la priorité d’évaluation.

Avec la requête suivante, vous obtenez un total de six pays.

SELECT * FROM countries WHERE(continent = 'Europe' AND indep_year > 1900)or(continent = 'Asia' AND indep_year > 1900);

Vous pouvez même chaîner plus de deux conditions dans une clause WHERE :

SELECT * FROM countries WHERE continent = 'Asia' OR indep_year > 1900 OR surface_area > 652090;

Ici, vous obtenez au total 15 pays qui sont soit situés en Asia, soit ont obtenu leur indépendance après 1901, soit ont une superficie supérieure à 652090.

Convertissons maintenant la requête en variante avec AND, plus restrictive :

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901 AND surface_area > 652090;

Dans ce cas, vous obtenez deux pays.

Vous pouvez également utiliser des sous‑requêtes dans une clause WHERE. Supposons que vous vouliez récupérer le pays ayant la plus grande superficie, sans connaître au préalable cette valeur maximale. La requête suivante est idéale dans ce type de situation :

SELECT * FROM countries WHERE surface_area in (SELECT MAX(surface_area) FROM countries);

Vous devriez obtenir l’enregistrement de Russia.

Conclusion

Félicitations, vous avez terminé ce tutoriel. Filtrer des résultats de requêtes selon des conditions est une compétence essentielle, et ce tutoriel en a posé les bases. Pour aller plus loin et renforcer vos compétences SQL, découvrez nos cours (lien ci‑dessous).

Devenez certifié SQL

Prouvez que vos compétences en SQL sont prêtes à l'emploi grâce à une certification.
Booster Ma Carrière

Sayak Paul's photo
Author
Sayak Paul

Sayak travaille à Hugging Face où il code, écrit et parle. Il consacre la majeure partie de son temps à tout ce qui touche à la bibliothèque des diffuseurs. Il est également instructeur de projets DataCamp et auteur de nombreux tutoriels DataCamp. En dehors du travail, vous le verrez regarder Suits sur Netflix pour la énième fois. 

FAQ sur la clause SQL WHERE

Puis-je utiliser des colonnes texte et numériques dans une clause WHERE ?

Oui, vous pouvez filtrer à la fois par texte (par exemple, 'Asia') et par valeur numérique (par exemple, > 1901). N’oubliez pas que les valeurs textuelles doivent être encadrées par des apostrophes.

Y a‑t‑il une différence entre <> et != en SQL ?

Les deux signifient « différent », mais <> est l’opérateur SQL standard. Certaines bases prennent aussi en charge !=, mais il est préférable d’utiliser <> pour une meilleure compatibilité.

Comment filtrer les enregistrements avec des valeurs NULL ?

Utilisez IS NULL ou IS NOT NULL. Par exemple :

SELECT * FROM countries WHERE indep_year IS NULL;

Puis-je utiliser des sous‑requêtes dans une clause WHERE ?

Oui, vous pouvez utiliser des sous‑requêtes pour comparer une colonne au résultat d’une autre requête. Par exemple :

SELECT * FROM countries WHERE surface_area = (SELECT MAX(surface_area) FROM countries);

La clause WHERE vient‑elle avant ou après la clause FROM ?

La clause WHERE vient toujours après la clause FROM et avant des clauses comme GROUP BY ou ORDER BY.

Puis-je utiliser WHERE avec des JOIN ?

Absolument. Vous pouvez appliquer la clause WHERE après un JOIN pour filtrer le jeu de résultats combiné.

Sujets
Analyse des données
Science des données
SQL

Cours SQL

Cours

Améliorer les performances des requêtes dans PostgreSQL

4 h
14K
Découvrez comment structurer vos requêtes PostgreSQL afin qu'elles s'exécutent en un temps record.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow