Retour à la liste des articles Articles
10 minutes de lecture

10 exercices d'entraînement SQL pour débutants avec solutions

Résolvez ces dix problèmes d'entraînement SQL et testez vos connaissances en SQL !

Cet article est consacré aux exercices d'entraînement SQL. C'est la meilleure façon d'apprendre le langage SQL. Nous vous présentons dix exercices de pratique SQL où vous devez appliquer des concepts SQL essentiels. Si vous êtes un débutant en SQL, ne vous inquiétez pas - ces exemples sont destinés aux débutants.

Utilisez-les pour vous entraîner ou pour apprendre de nouveaux concepts SQL. Pour plus de théorie et d'exercices (encore plus !), il y a notre cours interactif SQL pour les débutants interactif. Il vous apprend à sélectionner des données dans une ou plusieurs tables, à agréger et à grouper des données, à écrire des sous-requêtes et à utiliser des opérations ensemblistes. Le cours comprend 129 exercices interactifs, ce qui ne manque pas d'occasions de s'exercer au langage SQL, surtout si l'on y ajoute les 12 façons d'apprendre le langage SQL en ligne.

En parlant de pratique, commençons par nos exercices !

Le jeu de données

La question est toujours de savoir où trouver des données pour s'entraîner au langage SQL. Nous utiliserons notre jeu de données pour tous les exercices. Vous pouvez trouver d'autres jeux de données gratuits en ligne pour vous entraîner au langage SQL.

Notre jeu de données se compose de deux tables.

La table distribution_companies répertorie les sociétés de distribution de films avec les colonnes suivantes :

  • id - L'identifiant de la société de distribution. Il s'agit de la clé primaire de la table.
  • company_name - Le nom de la société de distribution.

Le tableau est illustré ci-dessous.

idcompany_name
1Columbia Pictures
2Paramount Pictures
3Warner Bros. Pictures
4United Artists
5Universal Pictures
6New Line Cinema
7Miramax Films
8Produzioni Europee Associate
9Buena Vista
10StudioCanal

Le deuxième tableau est le suivant movies. Voici les colonnes :

  • id - L'ID du film. Il s'agit de la clé primaire du tableau.
  • movie_title - Le titre du film.
  • imdb_rating - La cote du film sur IMDb.
  • year_released - L'année de sortie du film.
  • budget - Le budget du film en millions de dollars.
  • box_office - Les recettes du film en millions de dollars.
  • distribution_company_id - L'identifiant de la société de distribution, faisant référence à la table distribution_companies (clé étrangère).
  • language - La ou les langues parlées dans le film.

La table est présentée ci-dessous.

idmovie_titleimdb_ratingyear_releasedbudgetbox_officedistribution_company_idlanguage
1The Shawshank Redemption9.2199425.0073.301English
2The Godfather9.219727.20291.002English
3The Dark Knight9.02008185.001,006.003English
4The Godfather Part II9.0197413.0093.002English, Sicilian
512 Angry Men9.019570.342.004English
6Schindler's List8.9199322.00322.205English, German, Yiddish
7The Lord of the Rings: The Return of the King8.9200394.001,146.006English
8Pulp Fiction8.819948.50213.907English
9The Lord of the Rings: The Fellowship of the Ring8.8200193.00898.206English
10The Good, the Bad and the Ugly8.819661.2038.908English, Italian, Spanish

Exercice 1 : Sélection de toutes les colonnes d'un tableau

Exercice : Sélectionnez toutes les données du tableau distribution_companies.

Solution :

SELECT *
FROM distribution_companies;

Explication de la solution : Sélectionnez les données à l'aide de l'instruction SELECT. Pour sélectionner toutes les colonnes, utilisez un astérisque (*). La table dans laquelle les données sont sélectionnées est spécifiée dans la clause FROM.

Résultat de la solution :

idcompany_name
1Columbia Pictures
2Paramount Pictures
3Warner Bros. Pictures
4United Artists
5Universal Pictures
6New Line Cinema
7Miramax Films
8Produzioni Europee Associate
9Buena Vista
10StudioCanal

Exercice 2 : sélection de quelques colonnes dans un tableau

Exercice : Pour chaque film, sélectionnez le titre du film, la note IMDb et l'année de sortie du film.

Solution :

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies;

Explication de la solution : Dressez la liste de toutes les colonnes nécessaires (movie_title, imdb_rating, et year_released) dans l'instruction SELECT, en les séparant par une virgule. Faites référence au tableau movies dans la clause FROM.

Résultat de la solution :

movie_titleimdb_ratingyear_released
The Shawshank Redemption9.21994
The Godfather9.21972
The Dark Knight9.02008
The Godfather Part II9.01974
12 Angry Men9.01957
Schindler's List8.91993
The Lord of the Rings: The Return of the King8.92003
Pulp Fiction8.81994
The Lord of the Rings: The Fellowship of the Ring8.82001
The Good, the Bad and the Ugly8.81966

Exercice 3 : Sélection de quelques colonnes et filtrage de données numériques dans WHERE

Exercice : Sélectionnez les colonnes movie_title et box_office dans la table movies. N'affichez que les films dont les recettes sont supérieures à 300 millions de dollars.

Solution :

SELECT
  movie_title,
  box_office
FROM movies
WHERE box_office > 300;

Explication de la solution : Dressez la liste des colonnes dans SELECT et faites référence au tableau dans FROM. Utilisez une clause WHERE pour filtrer les données - écrivez la colonne box_office et utilisez l'opérateur "supérieur à" (>) pour n'afficher que les valeurs supérieures à 300 millions de dollars.

Sortie de la solution :

movie_titlebox_office
The Dark Knight1,006.00
Schindler's List322.20
The Lord of the Rings: The Return of the King1,146.00
The Lord of the Rings: The Fellowship of the Ring898.20

Exercice 4 : Sélection de quelques colonnes et filtrage de données textuelles dans WHERE

Exercice : Sélectionnez les colonnes movie_title, imdb_rating, et year_released dans le tableau movies. Afficher les films dont le titre contient le mot "Godfather".

Solution :

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE movie_title LIKE '%Godfather%';

Explication de la solution : Dressez la liste des colonnes dans SELECT et faites référence à la table dans la clause FROM. Utilisez une clause WHERE pour filtrer les données. Après avoir écrit le nom de la colonne, utilisez l'opérateur logique LIKE pour rechercher le mot "Godfather" dans le titre du film, écrit entre guillemets simples. Pour trouver le mot n'importe où dans le titre du film, placez le caractère générique (%) avant et après le mot.

Sortie de la solution :

movie_titleimdb_ratingyear_released
The Godfather9.21972
The Godfather Part II9.01974

Exercice 5 : Sélection de quelques colonnes et filtrage des données à l'aide de deux conditions dans WHERE

Exercice : Sélectionnez les colonnes movie_title, imdb_rating, et year_released dans le tableau movies. Afficher les films sortis avant 2001 et dont la note est supérieure à 9.

Solution :

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE year_released < 2001 AND imdb_rating > 9;

Explication de la solution : Dressez la liste des colonnes dans SELECT et faites référence au tableau dans FROM. Définissez la première condition, à savoir que l'année de sortie est antérieure à 2001, à l'aide de l'opérateur "less than" (<). Pour ajouter une autre condition, utilisez l'opérateur logique AND. Utilisez la même logique que pour la première condition, en utilisant cette fois l'opérateur "supérieur à" avec la colonne imdb_rating.

Sortie de la solution :

movie_titleimdb_ratingyear_released
The Shawshank Redemption9.21994
The Godfather9.21972

Exercice 6 : Filtrage des données à l'aide de WHERE et tri de la sortie

Exercice : Sélectionnez les colonnes movie_title, imdb_rating, et year_released dans le tableau movies. Affichez les films sortis après 1991. Triez les résultats en fonction de l'année de sortie par ordre croissant.

Solution :

SELECT
  movie_title,
  imdb_rating,
  year_released
FROM movies
WHERE year_released > 1991
ORDER BY year_released ASC;

Explication de la solution : Dressez la liste des colonnes à l'adresse SELECT et faites référence au tableau à l'adresse FROM. Filtrez les données à l'aide de WHERE en appliquant l'opérateur "supérieur à" à la colonne year_released. Pour trier les données, utilisez une clause ORDER BY et écrivez le nom de la colonne par laquelle vous souhaitez effectuer le tri. Le type de tri est spécifié en écrivant ASC (ascendant) ou DESC (descendant). Si le type est omis, la sortie est triée par défaut dans l'ordre croissant.

Sortie de la solution :

movie_titleimdb_ratingyear_released
Schindler's List8.91993
The Shawshank Redemption9.21994
Pulp Fiction8.81994
The Lord of the Rings: The Fellowship of the Ring8.82001
The Lord of the Rings: The Return of the King8.92003
The Dark Knight9.02008

Exercice 7 : Regroupement de données sur une colonne

Exercice : Affichez le nombre de films pour chaque catégorie de langue.

Solution :

SELECT
  language,
  COUNT(*) AS number_of_movies
FROM movies
GROUP BY language;

Explication de la solution : Sélectionnez la colonne language dans le tableau movies. Pour compter le nombre de films, utilisez la fonction d'agrégation COUNT(). Utilisez l'astérisque (*) pour compter les lignes, ce qui équivaut au nombre de films. Pour donner un nom à cette colonne, utilisez le mot-clé AS suivi du nom souhaité. Pour afficher le nombre de films par langue, vous devez regrouper les données en fonction de cette dernière. Vous devez donc écrire la colonne language dans la clause GROUP BY.

Sortie de la solution :

languagenumber_of_movies
English7
English, German, Yiddish1
English, Sicilian1
English, Italian, Spanish1

Exercice 8 : Regrouper des données en fonction de plusieurs colonnes

Exercice : Afficher le nombre de films par année de sortie et par langue. Triez les résultats par date de sortie en ordre croissant.

Solution :

SELECT
  year_released,
  language,
  COUNT(*) AS number_of_movies
FROM movies
GROUP BY year_released, language
ORDER BY year_released ASC;

Explication de la solution : Dressez la liste des colonnes year_released et language du tableau movies dans SELECT. Utilisez COUNT(*) pour compter le nombre de films et donnez un nom à cette colonne en utilisant le mot-clé AS. Spécifiez les colonnes par lesquelles vous voulez grouper dans la clause GROUP BY. Séparez chaque nom de colonne par une virgule. Triez la sortie en utilisant ORDER BY avec la colonne year_released et le mot-clé ASC.

Sortie de la solution :

year_releasedlanguagenumber_of_movies
1957English1
1966English, Italian, Spanish1
1972English1
1974English, Sicilian1
1993English, German, Yiddish1
1994English2
2001English1
2003English1
2008English1

Exercice 9 : Filtrer les données après le regroupement

Exercice : Affichez les langues parlées et le budget moyen des films par catégorie de langue. N'affichez que les langues dont le budget moyen est supérieur à 50 millions de dollars.

Solution :

SELECT
  language,
  AVG(budget) AS movie_budget
FROM movies
GROUP BY language
HAVING AVG(budget) > 50;

Explication de la solution : Sélectionnez la colonne language dans le tableau movies. Pour calculer le budget moyen, utilisez la fonction d'agrégation AVG() avec la colonne budget entre parenthèses. Nommez la colonne dans le résultat en utilisant le mot-clé AS. Regroupez les données par classement à l'aide de GROUP BY. Pour filtrer les données après le regroupement, utilisez une clause HAVING. Dans cette clause, utilisez la même construction AVG() que dans SELECT et définissez les valeurs supérieures à 50 à l'aide de l'opérateur "plus grand que".

Sortie de la solution :

languagemovie_budget
English59.01

Exercice 10 : Sélection de colonnes dans deux tableaux

Exercice : Afficher les titres de films du tableau movieschacun accompagné du nom de sa société de distribution.

Solution :

SELECT
  movie_title,
  company_name
FROM distribution_companies dc
JOIN movies m
ON dc.id = m.distribution_company_id;

Explication de la solution : Listez les colonnes movie_title et company_name dans SELECT. Dans la clause FROM, faites référence à la table distribution_companies. Donnez-lui un alias dc pour raccourcir son nom en vue d'une utilisation ultérieure. Le mot-clé AS est omis ici ; vous pouvez l'utiliser si vous le souhaitez. Pour accéder aux données de l'autre table, utilisez JOIN (on peut aussi l'écrire INNER JOIN) et écrivez le nom de la table à la suite. Donnez également un alias à cette table. La jointure utilisée ici est un type de jointure interne ; elle renvoie uniquement les lignes qui correspondent à la condition de jointure spécifiée dans la clause ON. Les tables sont jointes lorsque la colonne id de la table distribution_companies est égale à la colonne distribution_company_id de la table movies. Pour spécifier quelle colonne provient de quelle table, utilisez l'alias correspondant de chaque table.

Sortie de la solution :

movie_titlecompany_name
The Shawshank RedemptionColumbia Pictures
The Godfather Part IIParamount Pictures
The GodfatherParamount Pictures
The Dark KnightWarner Bros. Pictures
12 Angry MenUnited Artists
Schindler's ListUniversal Pictures
The Lord of the Rings: The Fellowship of the RingNew Line Cinema
The Lord of the Rings: The Return of the KingNew Line Cinema
Pulp FictionMiramax Films
The Good, the Bad and the UglyProduzioni Europee Associate

C'était amusant ! Maintenant, il est temps de faire La pratique du SQL par vous-même !

Ces dix exercices d'entraînement SQL vous donnent un aperçu de ce à quoi ressemble la pratique du langage SQL. Que vous soyez débutant, intermédiaire ou avancé, c'est la même chose. Ce qui change, c'est la complexité des problèmes que vous résolvez et du code que vous écrivez.

Vous trouverez d'autres défis dans le cours SQL pour les débutants et la piste mensuelle La pratique du SQL. Les deux sont excellents pour votre pratique de SQL en ligne. C'est vrai, surtout si vous n'avez pas l'occasion d'utiliser SQL quotidiennement dans votre travail.

N'essayez donc pas de tester le temps qu'il vous faut pour oublier ce que vous avez appris en SQL ! Profitez de chaque occasion pour résoudre autant de problèmes de pratique SQL que possible.