Retour à la liste des articles Articles
15 minutes de lecture

20 Exercices d'entraînement SQL WHERE pour les débutants

Table des matières

En SQL, la clause permet de filtrer les données en fonction de conditions définies. Lisez la suite pour suivre 20 exercices d'entraînement WHERE avec des explications et des solutions faciles pour les débutants.

Cet article passe en revue quelques-uns de nos exercices SQL WHERE. Nous commencerons par expliquer la syntaxe de base, puis nous examinerons 20 exercices faciles pour les débutants qui proviennent des cours de SQL listés ci-dessous. Ces exercices couvrent les principales utilisations de la clause WHERE et sont parfaits pour pratiquer vos compétences en SQL. Vous trouverez plus d'informations dans ces cours :

Chaque cours comporte des sections distinctes pour les différents sujets SQL et utilise une base de données différente pour vous permettre de pratiquer SQL. C'est en forgeant qu'on devient forgeron et c'est la meilleure façon d'améliorer vos compétences en SQL.

Sans plus attendre, commençons.

L'essentiel de la clause SQL WHERE

La clause SQL WHERE définit les conditions de filtrage des données. En d'autres termes, elle permet de récupérer uniquement les données qui répondent à des critères spécifiques. En incluant la clause WHERE dans les instructions SELECT, UPDATE, DELETE ou toute autre instruction SQL, l'ensemble de données de sortie peut être réduit pour n'inclure que les données pertinentes.

Le filtrage des données est essentiel pour une gestion et une analyse efficaces des données. Il permet d'extraire uniquement les informations nécessaires de vastes ensembles de données, de réduire le volume des données traitées et d'améliorer les performances des requêtes.

La clause WHERE utilise divers outils pour comparer et filtrer les données ; il s'agit notamment d'opérateurs de comparaison, de correspondance de motifs pour comparer les valeurs à des motifs spécifiques et d'opérateurs logiques pour combiner plusieurs conditions.

Dans l'instruction SELECT, la clause WHERE vient après les clauses SELECT et FROM:

SELECT id, name, age
FROM persons
WHERE age > 18;

Petit tour d'horizon : La clause SELECT énumère les colonnes à présenter dans la sortie et la clause FROM définit la table à partir de laquelle les données sont interrogées. La clause WHERE spécifie la condition de filtrage. Ici, nous ne sélectionnons que les personnes dont l'âge est supérieur à 18 ans. Pour en savoir plus sur l'écriture de la clause WHERE en SQL, cliquez ici.

Les sections suivantes contiennent des exercices d'entraînement SQL WHERE qui couvrent les applications suivantes :

  • Filtrer des valeurs numériques.
  • Filtrer des valeurs textuelles.
  • Filtrer les valeurs booléennes.
  • Filtrer les valeurs NULL.
  • Combinaison de plusieurs conditions.

Pour accéder à l'environnement de pratique, aux bases de données d'exemple et à encore plus de pratique sur WHERE, je vous encourage à vous inscrire au(x) cours complet(s).

Exercice SQL WHERE avec des valeurs numériques

Les exercices de cette section proviennent du cours La pratique du SQL: University. Voici le diagramme de la base de données de l'université utilisée dans les exercices suivants :

Cette rubrique est trop courte pour faire l'objet d'une rubrique H2 à part entière. Je recommande de l'ajouter à la clause WHERE Essentials H2 si vous ne voulez pas qu'il fasse partie du titre H2 Numerical Exercises.

Exercices pratiques SQL WHERE pour les débutants

Exercice 1 : Afficher les informations relatives à un conférencier spécifique

Question : Afficher toutes les données du professeur dont l'ID est égal à 8.

Solution :

SELECT *
FROM lecturer
WHERE id = 8;

Explication : Puisque nous voulons afficher toutes les données de ce professeur, nous sélectionnons toutes les colonnes du tableau. lecturer table. Cette opération s'effectue à l'aide de SELECT * FROM lecturer.

Nous sommes intéressés par les données relatives à l'enseignant dont l'ID est 8. Par conséquent, nous le spécifions en tant que condition dans la clause WHERE: id = 8.

Exercice 2 : Sélectionner les étudiants ayant obtenu une note de 95 ou plus

Question : Afficher l'identifiant de l'étudiant, la note finale et la lettre de la note pour chaque inscription à un cours où la note finale de l'étudiant était de 95 ou plus.

Solution :

SELECT
  student_id,
  final_grade,
  course_letter_grade
FROM course_enrollment
WHERE final_grade >= 95;

Explication : Nous voulons afficher l'identifiant de l'étudiant, la note finale et la lettre de la note pour chaque inscription à un cours. Nous ne sélectionnons donc que ces colonnes dans le course_enrollment tableau.

Nous voulons afficher uniquement les lignes de données où la note finale est égale ou supérieure à 95. Pour ce faire, nous définissons une condition dans la clause WHERE sous la forme final_grade >= 95.

Exercice 3 : Sélectionner tous les étudiants sauf un

Question : Afficher toutes les données des étudiants dont l'ID est différent de 1.

Solution :

SELECT *
FROM student
WHERE id != 1;

Explication : Nous voulons à nouveau sélectionner toutes les données du tableau. student nous utilisons donc le signe astérisque (*) qui représente toutes les colonnes disponibles.

Comme nous voulons afficher les données de tous les étudiants à l'exception de celui dont l'ID est 1, nous définissons dans la clause WHERE une condition selon laquelle l'ID n'est pas égal à 1 : id != 1.

Exercice 4 : Liste de tous les cours valant moins de 3 ECTS

Question : Afficher tous les cours valant moins de 3 ECTS. Affichez deux colonnes : title et ects_points.

Solution :

SELECT
  title,
  ects_points
FROM course
WHERE ects_points < 3;

Explication : Nous sélectionnons les titres des cours et leur valeur en points ECTS dans le tableau. course dans le tableau. Pour n'afficher que les cours dont la valeur est inférieure à 3 points ECTS, nous définissons la condition de la clause WHERE comme ects_points < 3.

Exercices SQL WHERE avec des valeurs de texte

Les exercices de cette section proviennent du cours La pratique du SQL: Store. Voici le schéma de la base de données du magasin :

Exercices pratiques SQL WHERE pour les débutants

Exercice 5 : Trouver la description d'une catégorie de produit

Question : Trouvez la description de la catégorie dont le nom est "Alcool".

Solution :

SELECT description
FROM category
WHERE name = 'Alcohol';

Explication : Pour afficher la description d'une catégorie de produits, nous sélectionnons la colonne description dans le tableau. category dans le tableau. Comme nous sommes intéressés par la description de la catégorie alcool, nous définissons la condition dans la clause WHERE comme name = 'Alcohol'.

Notez que les chaînes de caractères littérales ("Alcool") doivent être placées entre guillemets simples (') en SQL.

Exercice 6 : Lister tous les clients dont l'adresse électronique correspond au modèle

Question : Afficher toutes les données des clients dont l'adresse électronique se termine par ".com".

Solution :

SELECT *
FROM customer
WHERE contact_email LIKE '%.com';

Explication : Nous sélectionnons ici tous les clients du tableau customer tableau.

Nous voulons répertorier uniquement les clients dont l'adresse électronique se termine par ".com". Pour ce faire, nous allons utiliser la recherche de motifs. Dans la clause WHERE, nous définissons une condition sous la forme contact_email LIKE '%.com'. Dans la recherche de motifs SQL, le signe % représente n'importe quelle séquence de caractères.

L'opérateur LIKE est utilisé pour comparer son opérande gauche (généralement la valeur de la colonne) avec son opérande droit (le motif à comparer). Si la valeur correspond au motif, la condition est remplie ; sinon, elle échoue.

Pour en savoir plus sur l'utilisation de LIKE en SQL, cliquez ici.

Exercice 7 : Trouver les employés dont le nom de famille correspond au modèle

Question : Vous ne vous souvenez pas exactement du nom de famille de l'employé. Était-ce Mixer, Fixer, Bixer ou autre chose ? Affichez les données de tous les employés dont le nom de famille commence par une lettre et est suivi de "ixer".

Solution :

SELECT *
FROM employee
WHERE last_name LIKE '_ixer';

Explication : Nous sélectionnons toutes les colonnes du tableau employee Nous sélectionnons toutes les colonnes de la table.

Comme nous voulons trouver les employés dont le nom de famille se termine par "ixer", nous utilisons à nouveau la recherche de motifs. Dans la clause WHERE, nous définissons la condition comme last_name LIKE '_ixer'. Le signe _ représente un caractère.

Exercice 8 : Lister tous les produits dont le nom contient un tiret

Question : Affichez toutes les données relatives aux produits dont le nom contient un tiret (-).

Solution :

SELECT *
FROM product
WHERE product_name LIKE '%-%';

Explication : Nous sélectionnons toutes les colonnes du tableau product table. Dans la clause WHERE, nous définissons la condition comme product_name LIKE '%-%'. Le signe % représente n'importe quelle séquence ou nombre de caractères.

WHERE Exercices pratiques avec des valeurs booléennes

Les exercices de cette section proviennent du cours La pratique du SQL: University. Voici le schéma de la base de données de l'université:

Exercices pratiques SQL WHERE pour les débutants

Exercice 9 : Lister tous les cours qui se terminent par un examen final

Question : Affichez toutes les données relatives aux cours qui comportent un examen final (colonne has_exam). Notez que la colonne has_exam stocke des valeurs booléennes (true ou false).

Solution :

SELECT *
FROM course
WHERE has_exam IS TRUE;

Explication : Nous sélectionnons toutes les colonnes du tableau course Nous sélectionnons toutes les colonnes de la table.

Comme nous voulons lister uniquement les cours qui se terminent par un examen final, nous définissons la condition WHERE comme has_exam IS TRUE.

Exercice 10 : lister tous les cours qui ne comportent pas de projet final

Question : Affichez toutes les données relatives aux cours qui ne comportent pas de projet final (colonne has_project). Notez que la colonne has_project stocke des valeurs booléennes (true ou false).

Solution :

SELECT *
FROM course
WHERE has_project IS FALSE;

Explication : Nous sélectionnons à nouveau toutes les colonnes du tableau course . Cette fois, nous voulons répertorier tous les cours qui ne comportent pas de projet final. Nous définissons la condition de la clause WHERE comme has_project IS FALSE.

Exercice 11 : sélectionner tous les étudiants qui ont réussi leur examen final

Question : Affichez les identifiants de tous les étudiants qui ont réussi leur examen final. Incluez la colonne passed dans vos résultats. Notez que la colonne passed stocke des valeurs booléennes (true ou false).

Solution :

SELECT
  student_id,
  passed
FROM course_enrollment
WHERE passed IS TRUE;

Explication : Ici, nous voulons afficher la colonne qui contient les identifiants des étudiants et la colonne qui contient des informations sur la réussite de l'étudiant à son examen final. Nous sélectionnons ces colonnes dans le tableau course_enrollment table.

Dans la clause WHERE, nous définissons la condition passed IS TRUE pour filtrer uniquement les étudiants qui ont réussi leurs examens.

Exercice 12 : Sélectionner les étudiants qui ont échoué à leur examen final

Question : Affichez les identifiants et les notes finales de tous les étudiants qui ont échoué à leur examen final. N'oubliez pas que la colonne passed stocke des valeurs booléennes (true ou false).

Solution :

SELECT
  student_id,
  final_grade
FROM course_enrollment
WHERE passed IS FALSE;

Explication : Nous voulons afficher les colonnes qui contiennent les identifiants des étudiants et la note finale. Nous sélectionnons ces colonnes dans le tableau course_enrollment table. Dans la clause WHERE, nous définissons la condition passée IS FALSE pour filtrer uniquement les étudiants qui ont échoué à leur examen final.

Exercice WHERE avec des valeurs NULL

Les exercices de cette section proviennent du cours La pratique du SQL: Store. Voici le diagramme de la base de données du magasin :

Exercices pratiques SQL WHERE pour les débutants

Exercice 13 : Sélectionner les catégories sans description

Question : Afficher toutes les catégories qui n'ont pas de description.

Solution :

SELECT *
FROM category
WHERE description IS NULL;

Explication : Nous sélectionnons toutes les colonnes du tableau category qui contient les catégories de produits.

Comme nous ne voulons répertorier que les catégories qui n'ont pas de description, nous devons fournir la condition WHERE description IS NULL ; NULL signifie qu'il n'y a pas de valeur dans cette colonne.

Vous vous demandez peut-être pourquoi nous utilisons IS NULL au lieu de = NULL. C'est parce que NULL signifie aucune valeur ; nous ne pouvons pas vérifier si la valeur est égale à NULL parce qu'il n'y a pas de valeur à comparer. IS NULL nous permet de vérifier si une valeur est (ou n'est pas) présente.

Exercice 14 : Trouver tous les clients d'une entreprise

Question : Afficher toutes les données des clients dont le nom de l'entreprise n'est pas NULL.

Solution :

SELECT *
FROM customer
WHERE company_name IS NOT NULL;

Explication : Nous sélectionnons toutes les colonnes de la table customer . Comme nous voulons répertorier tous les clients associés à une société, nous définissons la condition de la clause WHERE comme company_name IS NOT NULL. C'est assez explicite, car c'est ce que nous dirions en anglais.

Exercice 15 : Recherche d'achats avec une adresse inconnue

Question : Afficher l'identifiant de l'achat, l'identifiant du client et l'identifiant de l'employé pour les achats dont l'adresse de livraison est inconnue.

Solution :

SELECT
  purchase_id,
  customer_id,
  employee_id
FROM purchase
WHERE ship_address IS NULL;

Explication : Nous voulons afficher l'ID de l'achat, l'ID du client et l'ID de l'employé, et nous sélectionnons donc ces colonnes dans la table purchase Nous sélectionnons donc ces colonnes dans la table.

Ensuite, nous voulons répertorier uniquement les achats dont l'adresse de livraison est inconnue, ce qui équivaut à la valeur NULL. La condition de la clause WHERE est donc ship_address IS NULL.

Exercice 16 : Lister toutes les catégories parentales

Question : Afficher les noms de toutes les catégories parentes, c'est-à-dire les catégories qui n'ont pas de catégorie parente.

Solution :

SELECT name
FROM category
WHERE parent_category_id IS NULL;

Explication : Nous voulons afficher les noms des catégories, nous sélectionnons donc la colonne nom dans la table des catégories.

Pour ne sélectionner que les catégories parentes, nous définissons la condition WHERE comme parent_category_id IS NULL. Cela correspond à l'instruction selon laquelle les catégories parents sont celles qui n'ont pas de catégorie parentale assignée.

Utilisation de WHERE avec plusieurs conditions de filtrage

Les exercices de cette section proviennent du cours La pratique du SQL: Blog. Voici le diagramme de la base de données :

Exercices pratiques SQL WHERE pour les débutants

Exercice 17 : Sélectionner tous les articles de mars 2020

Question : Afficher les URLs et les titres de tous les articles (colonnes url et title ) dont la date de publication est en mars 2020.

Solution :

SELECT
  url,
  title
FROM article
WHERE publication_date >= '2020-03-01' 
AND publication_date < '2020-04-01';

Explication : Nous voulons afficher les URLs et les titres des articles, donc nous sélectionnons les colonnes appropriées dans le tableau. article Nous sélectionnons donc les colonnes appropriées dans le tableau.

Comme nous ne nous intéressons qu'aux articles de mars 2020, nous avons défini la condition de la clause WHERE pour nous assurer que chaque article sélectionné a été publié le ou après le 1er mars 2020t et avant le 1er avril 2020. Nous utilisons l'opérateur logique AND pour joindre ces conditions : publication_date >= '2020-03-01' AND publication_date < '2020-04-01'.

Les dates sont généralement stockées dans des types de données spéciaux tels que DATE, DATETIME ou TIMESTAMP. Pour comparer une colonne de date à une valeur de date spécifique, nous utilisons des opérateurs de comparaison standard tels que =, <, >, <=, >= ou BETWEEN. Le format de date en SQL est généralement YYYY-MM-DD, qui représente l'année, le mois et le jour. Les valeurs de la partie date sont séparées par des traits d'union.

Notez que vous devez mettre entre guillemets simples les littéraux de comparaison de date (publication_date >= '2020-03-01').

Exercice 18 : Trouver le trafic du mois de juin pour un article donné

Question : Trouvez des informations sur le trafic pour l'article "/blog/puppy-training-techniques/" en juin 2020. Affichez le site visit_date et le nombre de vues ce jour-là.

Solution :

SELECT 
  visit_date,
  views
FROM article_traffic
WHERE url = '/blog/puppy-training-techniques/'
AND visit_date >= '2020-06-01' 
AND visit_date < '2020-07-01';

Explication : Nous sélectionnons la date de la visite et le nombre de vues par jour dans le tableau. article_traffic tableau.

Nous voulons afficher le trafic vers un article spécifique. Nous filtrons donc cet article à l'aide de son URL : url = '/blog/puppy-training-techniques/'. Notez les guillemets simples autour de la valeur de comparaison.

Comme nous nous intéressons au trafic de juin 2020, nous imposons deux autres conditions WHERE à la colonne visit_date. Celles-ci ne renverront que les informations sur le trafic du mois de juin : visit_date >= '2020-06-01' AND visit_date < '2020-07-01'.

Cette fois, la clause WHERE comprend trois conditions, toutes combinées à l'aide des opérateurs logiques AND.

Exercice 19 : Lister les articles d'un auteur et d'une catégorie

Question : Renvoyer l'URL de tous les articles de Lewis Goodwin (ID auteur = 16) de la catégorie 3 ("Santé des chiens") ou de la catégorie 6 ("Idées de cadeaux pour chiens").

Solution :

SELECT url
FROM article
WHERE author_id = 16
AND (article_category_id = 3 OR article_category_id = 6);

Explication : Nous voulons afficher l'URL d'articles spécifiques de la table article table.

Tout d'abord, nous voulons lister les articles écrits par l'auteur dont l'ID est 16. Il s'agit de la première condition de la clause WHERE: author_id = 16.

Nous voulons également lister uniquement les articles de la catégorie 3 ou de la catégorie 6. Nous devons créer une condition composite avec l'opérateur logique OR et la placer entre parenthèses : (article_category_id = 3 OR article_category_id = 6).

Enfin, nous combinons ces deux conditions avec l'opérateur logique AND.

Exercice 20 : afficher les données de trafic d'un article spécifique

Question : Renvoyer toutes les données sur le trafic des articles au 1er décembre 2020 où le nombre de vues est compris entre 50 et 100, inclusivement (c'est-à-dire 50 <= vues <= 100).

Solution :

SELECT *
FROM article_traffic
WHERE views <= 100
AND views >= 50
AND visit_date = '2020-12-01';

Explication : Nous sélectionnons toutes les colonnes du tableau article_traffic Nous sélectionnons toutes les colonnes du tableau.

Nous voulons voir les données de trafic pour les articles dont le nombre de vues est compris entre 50 et 100. Nous définissons donc la condition combinée de la clause WHERE comme views <= 100 AND views >= 50.

Comme nous sommes intéressés par les données du 1er décembre 2020, nous définissons une autre condition de clause WHERE: visit_date = '2020-12-01'.

Requête sur avec SQL WHERE Pratique !

Cet article a présenté toutes les bases de la clause SQL WHERE. Les exercices pratiques couvrent le filtrage des valeurs numériques, textuelles, booléennes et NULL, ainsi que la combinaison de plusieurs conditions pour des options de filtrage plus complexes. Vous trouverez d 'autres articles avec des exercices d'entraînement SQL ici.

Tous ces cours sont disponibles sur notre site La pratique du SQL , où vous trouverez encore plus de pratique SQL. Pour l'option de pratique ultime, notre Tout à vie SQL Package vous donne un accès à vie à tous nos cours actuels et futurs avec un seul achat.

C'est en pratiquant que l'on devient parfait ! Bon voyage SQL !