Retour à la liste des articles Articles
11 minutes de lecture

SQL Practice for Students : 11 exercices de pratique SQL de base avec solutions

Appel à tous les étudiants ! Êtes-vous curieux de SQL ? Vous voulez apprendre ou améliorer vos compétences en SQL ? Cet article contient 11 exercices d'entraînement SQL avec des solutions détaillées.

Avez-vous déjà entendu dire que "c'est en forgeant qu'on devient forgeron" ? C'est probablement le cas - c'est pourquoi vous recherchez des ressources d'entraînement SQL. Si vous voulez développer des compétences solides ou devenir un expert dans un certain domaine, vous devez vous entraîner.

Comme l'écrit Rebecca McKeown dans son remarquable article Learning SQL ? 12 Ways to Practice SQL Online: "All theory and no practice will make you a frustrated SQL user !". Et elle a raison ! Chaque fois que vous apprenez un nouveau concept, vous devez l'appliquer immédiatement en pratiquant. C'est la raison d'être des exercices présentés dans cet article.

La plupart des exercices suivants sont tirés de notre cours interactif La pratique du SQL: University. Ce cours interactif en ligne est conçu pour les personnes qui connaissent le langage SQL et qui recherchent des exercices d'entraînement couvrant les requêtes sur une table unique, les jointures, le tri, le regroupement, l'agrégation, etc. Il fait partie de notre La pratique du SQL qui contient d'autres cours de pratique SQL pour les débutants.

11 Basic La pratique du SQL Exercises with Solutions

Aperçu d'un exercice interactif sur LearnSQL.fr.

Mais peut-être ne souhaitez-vous pas encore vous engager dans un cours complet. Ce n'est pas grave ! Ces 11 exercices vous aideront à pratiquer et à améliorer vos compétences en SQL - sans frais et sans engagement ! Attachez votre ceinture et commençons !

Améliorez vos compétences La pratique du SQL

Nos exercices d'entraînement SQL sont parfaitement adaptés aux étudiants : Je vais utiliser le modèle universitaire, quelque chose qui devrait vous être familier ! Voici les tables que nous utiliserons pendant les exercices :

  • student contient les données de base relatives aux étudiants universitaires : prénom, nom, email, date de naissance et date de début.
  • lecturer contient les données de base relatives aux enseignants : prénom, nom, diplôme et adresse électronique.
  • academic_semester contient des informations de base relatives aux semestres universitaires : année civile, trimestre, date de début et date de fin.
  • course_edition est une table utilisée pour joindre les trois autres tables : course (que nous n'utiliserons pas dans cet article), academic_semester, et lecturer.
11 Basic La pratique du SQL Exercises with Solutions

Si vous souhaitez vous entraîner à utiliser la base de données complète de l'université, consultez le cours Basic La pratique du SQL: University. (Nous avons une offre spéciale et des prix spéciaux pour les étudiants et les enseignants ! Si vous êtes intéressé, consultez notre offre de cours SQL pour étudiants ).

11 Exercices de base La pratique du SQL

Dans cette section, je fournirai 11 exercices d'entraînement SQL avec les solutions. La difficulté augmentera progressivement : Je commencerai par des exercices très faciles et génériques et j'introduirai de nouveaux concepts SQL petit à petit.

Êtes-vous prêt à améliorer votre pratique du langage SQL ?

Exercice 1 : Liste de tous les étudiants

Exercice

Sélectionner toutes les données des étudiants dans la base de données.

Solution

SELECT * 
FROM student;

Explication

Nous voulons extraire les informations relatives aux étudiants de la base de données. Par conséquent, nous devons utiliser la clause SELECT et la clause FROM sur la table student table. Le symbole de l'astérisque (*) est utilisé ici comme raccourci pour représenter les noms de toutes les colonnes de la table students. Notez que toutes les instructions SQL se terminent par le caractère point-virgule (;).

Exercice 2 : Liste de tous les noms d'étudiants

Exercice

Sélectionnez le prénom et le nom de famille de tous les étudiants.

Solution

SELECT first_name, last_name
FROM student;

Explication

Cette fois, nous voulons extraire des informations partielles de la base de données. Nous pouvons facilement le faire en indiquant le nom des colonnes que nous voulons récupérer - dans ce cas, first_name et last_name. Les noms des colonnes sont séparés par une virgule et suivis de l'instruction FROM avec le nom de la table (student).

Exercice 3 : sélection d'un professeur spécifique par son numéro d'identification

Exercice

Sélectionnez l'adresse électronique du professeur dont l'ID est 5 dans la base de données.

Solution

SELECT email
FROM lecturer
WHERE id = 5;

Explication

Cette fois-ci, nous voulons extraire les informations relatives à l'enseignant de la base de données. Par conséquent, nous devons utiliser la clause SELECT et la clause FROM sur la table lecturer table.

Dans une base de données, chaque table possède généralement une colonne de clé primaire (généralement appelée ID) qui représente un identifiant unique pour chaque entrée. Dans cet exercice, nous n'extrayons qu'un seul conférencier (c'est-à-dire une seule ligne) de la table lecturer (c'est-à-dire une ligne). Pour ce faire, nous utilisons la clause WHERE avec la condition id=5.

Dans ce cas, nous utilisons l'opérateur de comparaison "equal" (=). Nous pourrions également écrire une condition avec d'autres opérateurs de comparaison, tels que >, <, >=, <=, ou <> (différent de).

Exercice 4 : sélection des étudiants par leur nom de famille

Exercice

Sélectionnez toutes les données d'un étudiant dont le nom de famille est Durrand.

Solution

SELECT *
FROM student
WHERE last_name = 'Durrand';

Explication

Retour au student table ! Dans cet exercice, nous voulons récupérer tous les étudiants dont le nom de famille est Durrand. La colonne last_name autorise les valeurs dupliquées ; par conséquent, lorsque nous utilisons la clause WHERE, plusieurs lignes peuvent être retournées.

Notez que les guillemets simples (') sont utilisés en SQL pour entourer les valeurs de texte (‘Durrand’).

Exercice 5 : Sélectionner les étudiants dont le nom de famille commence par D

Exercice

Sélectionnez le prénom et le nom des étudiants dont le nom de famille commence par la lettre D.

Solution

SELECT first_name, last_name
FROM student
WHERE last_name LIKE 'D%';

Explication

Dans cet exercice, nous ne recherchons pas des élèves ayant un nom de famille exact mais des élèves dont le nom de famille commence par une lettre spécifique (D). L'opérateur de comparaison equal (=) ne peut pas être utilisé dans cet exercice car nous ne recherchons pas une correspondance exacte. Heureusement, SQL propose l'opérateur LIKE qui nous permet de rechercher un modèle spécifique.

L'utilisation de la clause WHERE en combinaison avec l'opérateur LIKE sur la colonne last_name fait l'affaire ! Le caractère pour cent (%) est utilisé pour représenter zéro, un ou plusieurs caractères. Par conséquent, ‘D%’ signifie ici "Un nom qui commence par D suivi de zéro, un ou plusieurs caractères".

Vous avez aimé les exercices de cet article ? Vous en trouverez d'autres dans l'excellent article 10 Beginner La pratique du SQL Exercises With Solutions de mon ami Tihomir Babic.

Exercice 6 : Utiliser plusieurs conditions pour sélectionner un semestre universitaire

Exercice

Sélectionnez toutes les données des semestres universitaires pour lesquels les deux conditions suivantes sont remplies : l'année est 2020 et le trimestre est le printemps.

Solution

SELECT *
FROM academic_semester
WHERE calendar_year = 2020
  AND term = 'spring';

Explication

Cette fois-ci, on nous demande de récupérer des informations sur les semestres universitaires. Nous allons exécuter une clause SELECT sur la table academic_semester pour y parvenir. Par rapport aux exercices précédents, il y a une nouveauté : nous avons 2 conditions !

Vous vous demandez peut-être si les conditions multiples sont autorisées en SQL ; oui, elles le sont ! La seule chose à faire est d'utiliser un opérateur logique en combinaison avec la clause WHERE. SQL propose trois opérateurs logiques : AND OR NOT Dans cet exercice, nous voulons que les 2 conditions soient remplies, nous utilisons donc l'opérateur logique AND.

Notez que la colonne calendar_year est de type entier, alors que le terme est une chaîne de caractères. C'est pourquoi nous n'utilisons pas de guillemets lors de la recherche de 2020 dans calendar_year et que nous utilisons des guillemets simples lors de la recherche de 'Spring'.

Exercice 7 : trier les étudiants par nom de famille

Exercice

Sélectionnez le nom de famille et la date de naissance des élèves nés en 2003 ou après et triez-les par nom de famille dans l'ordre décroissant (de Z à A).

Solution

SELECT last_name, birth_date
FROM student
WHERE birth_date >= '2003-01-01'
ORDER BY last_name DESC;

Explication

Dans cet exercice, nous recherchons tous les étudiants nés le 1er janvier 2003 ou après. Par conséquent, notre filtre s'appliquera à la colonne birth_date dans le tableau student de la table.

Si vous regardez à nouveau le diagramme de base de données que j'ai fourni au début de cet article, vous verrez que la colonne birth_date a un type de données de type date.

En SQL, les dates sont stockées dans l'ordre suivant : année, mois et jour. C'est ce que nous appelons le format yyyy-mm-dd. Par exemple, le 10 janvier 2023 sera stocké sous la forme 2023-01-10 dans une base de données.

SQL utilise également des guillemets simples pour entourer les dates (le 10 janvier 2023 s'écrit ‘2023-01-10’) et les comparaisons sont autorisées sur les dates. Par conséquent, pour construire la requête dont nous avons besoin, nous utilisons la clause WHERE avec le symbole de comparaison supérieur ou égal à (>=) pour la date de naissance.

Nous ordonnons ensuite le résultat par nom de famille grâce au mot-clé ORDER BY. Le mot-clé DESC indique ici que le résultat sera trié par ordre décroissant (de Z à A). Si vous voulez trier par ordre croissant, utilisez le mot-clé ASC.

Exercice 8 : Etudiants nés entre 2003 et 2004

Exercice

Sélectionnez dans la base de données le prénom, le nom et la date de naissance des élèves nés entre 2003 et 2004.

Solution

SELECT first_name, last_name, birth_date
FROM student
WHERE birth_date >= '2003-01-01'
AND birth_date <='2004-12-31';

Explication

Dans cet exercice, nous récupérons les enregistrements de tous les étudiants nés le ou après le 1er janvier 2003 et avant ou le 31 décembre 2003. Nous utilisons la clause SELECT.

Nous avons vu dans l'exercice précédent que les comparaisons sont autorisées sur les dates, donc notre condition ici est  birth_date >= '2003-01-01' AND birth_date <='2004-12-31'

Exercice 9 : Compter les étudiants pour chaque date de début

Exercice

Sélectionnez la date de début pour tous les étudiants et montrez combien d'étudiants ont la même date de début.

Solution

SELECT start_date, COUNT(*)
FROM student
GROUP BY start_date;

Explication

Dans cet exercice, nous voulons récupérer la date de début de tous les étudiants et montrer combien d'étudiants ont la même date de début. Nous avons donc besoin d'une colonne qui affiche les dates de début sans doublons et d'une autre colonne qui indique le nombre d'étudiants ayant la même date de début.

L'instruction GROUP BY permet de regrouper les lignes ayant les mêmes valeurs (ici, la date de début). En outre, nous utilisons la fonction d'agrégation COUNT() pour afficher le nombre de lignes correspondant à la valeur de la date de début.

Exercice 10 : Sélectionner, grouper et filtrer les résultats

Exercice

Trouvez les dates de début pour lesquelles il y avait plus de 15 étudiants. Affichez la date de début et le nombre d'étudiants qui ont commencé à cette date.

Solution

SELECT start_date, COUNT(*)
FROM student
GROUP BY start_date
HAVING COUNT(*) > 15;

Explication

Nous voulons effectuer la même requête que dans l'exercice précédent, mais avec une légère différence : nous voulons filtrer les résultats pour n'afficher que ceux qui correspondent à un certain montant.

De la même manière, nous effectuons un SELECT sur la table student sur la table. Nous regroupons les résultats par date de début et utilisons la fonction d'agrégation COUNT(). Enfin, nous utilisons la clause HAVING à la fin de la requête pour supprimer de l'ensemble des résultats les dates de début qui comptent moins de 15 étudiants.

Exercice 11 : Combien de cours chaque enseignant dispense-t-il ?

Exercice

Pour chaque enseignant, déterminez le nombre de cours qu'il dispense au cours de chaque semestre universitaire. Affichez le nom et le prénom de l'enseignant, l'année civile, le semestre et le nombre de cours enseignés par l'enseignant au cours de ce semestre.

Solution

SELECT
   lec.first_name,
   lec.last_name,
   acs.calendar_year,
   acs.term,
   COUNT(course_id)
FROM lecturer AS lec
JOIN course_edition AS ce 
  ON ce.lecturer_id = lec.id
JOIN academic_semester AS acs 
  ON ce.academic_semester_id = acs.id
GROUP BY lec.id, acs.id;

Explication

Cet exercice est un peu plus difficile. Nous devons joindre trois tables : lecturer, course_edition, et academic_semester. Pour ce faire, nous utilisons l'opérateur JOIN. Ensuite, nous utilisons la clause GROUP BY pour regrouper les éditions de cours enseignées par le même conférencier au cours du même semestre universitaire. Enfin, nous utilisons la fonction COUNT() pour compter le nombre de cours d'un enseignant pour ce semestre.

L'article SQL Joins : 12 Practice Questions with Detailed Answers de Tihomir Babic contient plus de pratique sur les jointures SQL si vous êtes intéressé.

Vous avez envie de plus de La pratique du SQL?

J'espère vraiment que cet article vous a permis de mettre en pratique vos compétences en SQL et qu'il vous a incité à commencer un parcours d'apprentissage en SQL !

Si vous aimez les exercices de cet article, rappelez-vous que la plupart d'entre eux sont tirés du cours La pratique du SQL: University on LearnSQL.fr. Il fait partie de notre parcoursLa pratique du SQL , qui contient 8 autres cours et près de 1 000 exercices ; c'est beaucoup d'expérience pratique !

Si vous souhaitez vous plonger dans le langage SQL, je vous recommande notre offreTout à vie SQL Package. Cette offre contient tous les cours SQL actuels et futurs dans quatre dialectes SQL différents. Nous avons également une offre spéciale pour les étudiants.

Merci d'avoir lu cet article ; à bientôt dans le prochain !