22nd May 2023 10 minutes de lecture 10 exercices d'entraînement SQL pour débutants avec solutions Tihomir Babic sql apprendre sql pratique en ligne 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. 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. Tags: sql apprendre sql pratique en ligne