10 exercices d'entraînement SQL pour débutants avec solutions
Table des matières
- Le jeu de données
- Exercice 1 : Sélection de toutes les colonnes d'un tableau
- Exercice 2 : sélection de quelques colonnes dans un tableau
- Exercice 3 : Sélection de quelques colonnes et filtrage de données numériques dans WHERE
- Exercice 4 : Sélection de quelques colonnes et filtrage de données textuelles dans WHERE
- Exercice 5 : Sélection de quelques colonnes et filtrage des données à l'aide de deux conditions dans WHERE
- Exercice 6 : Filtrage des données à l'aide de WHERE et tri de la sortie
- Exercice 7 : Regroupement de données sur une colonne
- Exercice 8 : Regrouper des données en fonction de plusieurs colonnes
- Exercice 9 : Filtrer les données après le regroupement
- Exercice 10 : Sélection de colonnes dans deux tableaux
- C'était amusant ! Maintenant, il est temps de faire La pratique du SQL par vous-même !
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.
id | company_name |
---|---|
1 | Columbia Pictures |
2 | Paramount Pictures |
3 | Warner Bros. Pictures |
4 | United Artists |
5 | Universal Pictures |
6 | New Line Cinema |
7 | Miramax Films |
8 | Produzioni Europee Associate |
9 | Buena Vista |
10 | StudioCanal |
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.
id | movie_title | imdb_rating | year_released | budget | box_office | distribution_company_id | language |
---|---|---|---|---|---|---|---|
1 | The Shawshank Redemption | 9.2 | 1994 | 25.00 | 73.30 | 1 | English |
2 | The Godfather | 9.2 | 1972 | 7.20 | 291.00 | 2 | English |
3 | The Dark Knight | 9.0 | 2008 | 185.00 | 1,006.00 | 3 | English |
4 | The Godfather Part II | 9.0 | 1974 | 13.00 | 93.00 | 2 | English, Sicilian |
5 | 12 Angry Men | 9.0 | 1957 | 0.34 | 2.00 | 4 | English |
6 | Schindler's List | 8.9 | 1993 | 22.00 | 322.20 | 5 | English, German, Yiddish |
7 | The Lord of the Rings: The Return of the King | 8.9 | 2003 | 94.00 | 1,146.00 | 6 | English |
8 | Pulp Fiction | 8.8 | 1994 | 8.50 | 213.90 | 7 | English |
9 | The Lord of the Rings: The Fellowship of the Ring | 8.8 | 2001 | 93.00 | 898.20 | 6 | English |
10 | The Good, the Bad and the Ugly | 8.8 | 1966 | 1.20 | 38.90 | 8 | English, 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 :
id | company_name |
---|---|
1 | Columbia Pictures |
2 | Paramount Pictures |
3 | Warner Bros. Pictures |
4 | United Artists |
5 | Universal Pictures |
6 | New Line Cinema |
7 | Miramax Films |
8 | Produzioni Europee Associate |
9 | Buena Vista |
10 | StudioCanal |
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_title | imdb_rating | year_released |
---|---|---|
The Shawshank Redemption | 9.2 | 1994 |
The Godfather | 9.2 | 1972 |
The Dark Knight | 9.0 | 2008 |
The Godfather Part II | 9.0 | 1974 |
12 Angry Men | 9.0 | 1957 |
Schindler's List | 8.9 | 1993 |
The Lord of the Rings: The Return of the King | 8.9 | 2003 |
Pulp Fiction | 8.8 | 1994 |
The Lord of the Rings: The Fellowship of the Ring | 8.8 | 2001 |
The Good, the Bad and the Ugly | 8.8 | 1966 |
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_title | box_office |
---|---|
The Dark Knight | 1,006.00 |
Schindler's List | 322.20 |
The Lord of the Rings: The Return of the King | 1,146.00 |
The Lord of the Rings: The Fellowship of the Ring | 898.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_title | imdb_rating | year_released |
---|---|---|
The Godfather | 9.2 | 1972 |
The Godfather Part II | 9.0 | 1974 |
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_title | imdb_rating | year_released |
---|---|---|
The Shawshank Redemption | 9.2 | 1994 |
The Godfather | 9.2 | 1972 |
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_title | imdb_rating | year_released |
---|---|---|
Schindler's List | 8.9 | 1993 |
The Shawshank Redemption | 9.2 | 1994 |
Pulp Fiction | 8.8 | 1994 |
The Lord of the Rings: The Fellowship of the Ring | 8.8 | 2001 |
The Lord of the Rings: The Return of the King | 8.9 | 2003 |
The Dark Knight | 9.0 | 2008 |
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 :
language | number_of_movies |
---|---|
English | 7 |
English, German, Yiddish | 1 |
English, Sicilian | 1 |
English, Italian, Spanish | 1 |
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_released | language | number_of_movies |
---|---|---|
1957 | English | 1 |
1966 | English, Italian, Spanish | 1 |
1972 | English | 1 |
1974 | English, Sicilian | 1 |
1993 | English, German, Yiddish | 1 |
1994 | English | 2 |
2001 | English | 1 |
2003 | English | 1 |
2008 | English | 1 |
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 :
language | movie_budget |
---|---|
English | 59.01 |
Exercice 10 : Sélection de colonnes dans deux tableaux
Exercice : Afficher les titres de films du tableau movies
chacun 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_title | company_name |
---|---|
The Shawshank Redemption | Columbia Pictures |
The Godfather Part II | Paramount Pictures |
The Godfather | Paramount Pictures |
The Dark Knight | Warner Bros. Pictures |
12 Angry Men | United Artists |
Schindler's List | Universal Pictures |
The Lord of the Rings: The Fellowship of the Ring | New Line Cinema |
The Lord of the Rings: The Return of the King | New Line Cinema |
Pulp Fiction | Miramax Films |
The Good, the Bad and the Ugly | Produzioni 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.