15th Sep 2023 24 minutes de lecture 20 exemples de requêtes SQL de base pour les débutants : Une vue d'ensemble complète Tihomir Babic sql requêtes sql Table des matières Qu'est-ce que le langage SQL ? Jeu de données 1. Sélection de toutes les colonnes d'un tableau Requête Explication Sortie 2. Sélection d'une colonne d'une table Requête Explication Résultat 3. Sélection de deux colonnes dans un tableau Requête Explication Résultat 4. Sélection de deux colonnes (ou plus) d'une table et filtrage à l'aide d'une comparaison numérique dans WHERE Requête Explication Résultat 5. Sélection de deux colonnes et filtrage à l'aide d'une condition d'égalité dans WHERE Requête Explication Sortie 6. Sélection de deux colonnes et classement par une colonne Requête Explication Résultat 7. Sélection de deux colonnes et tri descendant d'une colonne Requête Explication Résultat 8. Sélection de deux colonnes d'une table et classement décroissant de deux colonnes Requête Explication Résultats 9. Sélection de deux colonnes avec une condition logique complexe dans WHERE Requête Explication Sortie 10. Calculs simples sur les colonnes Requête Explication Résultat 11. Utilisation de SUM() et GROUP BY Requête Explication Sortie 12. Utilisation de COUNT() et GROUP BY Requête Explication Résultat 13. Utilisation de AVG() et GROUP BY Requête Explication Résultat 14. Utilisation de MIN() et de GROUP BY Requête Explication Résultats 15. Utilisation de MAX() et de GROUP BY Requête Explication Résultat 16. Utilisation de SUM(), WHERE et GROUP BY Requête Explication Résultat 17. Utilisation de COUNT(), WHERE et GROUP BY Requête Explication Résultat 18. Accès aux données de deux tables à l'aide d'une jointure interne (INNER JOIN) Requête Explication Résultats 19. Accès aux données de deux tables à l'aide de la fonction INNER JOIN et filtrage à l'aide de la fonction WHERE Requête Explication Résultats 20. Accès aux données de deux tables à l'aide de la fonction INNER JOIN, du filtrage à l'aide de la fonction WHERE et du tri à l'aide de la fonction ORDER BY Requête Explication Résultat Des requêtes SQL de base à la maîtrise de SQL Ces 20 requêtes de base sont indispensables dans un pack de démarrage pour tout débutant en SQL. Ces exemples vous permettront de vous lancer dans la maîtrise de SQL. Vous avez décidé d'apprendre le langage SQL, vous avez cherché sur Google 'basic sql query examples' ou quelque chose de similaire, et vous voilà devant cet article. Et maintenant ? Tout apprentissage commence par les bases, alors commençons par la question la plus élémentaire : Qu'est-ce que le langage SQL ? La première chose à faire est de savoir ce qu'est le langage SQL. SQL, ou Structured Query Language, est un langage de programmation. Comme tout langage - de programmation ou naturel - il est utilisé pour communiquer, pour parler. Le langage SQL est conçu pour communiquer avec une base de données. Pour ce faire, nous utilisons des phrases que nous appelons des requêtes, qui sont des commandes SQL permettant d'extraire des données de la base de données. Nous vous montrerons bientôt 20 exemples de requêtes SQL de base pour commencer à parler avec la base de données. Toutes ces requêtes sont enseignées dans notre SQL pour les débutants Ce cours vous donnera encore plus de structure, d'exemples et de défis à relever. Il comporte 129 exercices interactifs sur l'interrogation d'une ou plusieurs tables, l'agrégation et le regroupement de données, les JOIN, les sous-requêtes et les opérations ensemblistes. Même avec les 20 exemples à venir, nous ne montrerons pas tous les détails ni même toutes les requêtes de base. C'est pourquoi nous recommandons d'utiliser le cours comme une plate-forme pour pratiquer les principes fondamentaux que nous aborderons ici. De plus, la plupart de nos exemples sont joliment présentés dans notre Cheat SheetSQL pour les débutants . N'hésitez pas à l'avoir à portée de main - elle pourrait vous aider à mieux comprendre ce qui suit. Ne perdons pas de temps ! Nous allons présenter le jeu de données, puis nous allons écrire et expliquer les requêtes SQL de base. Jeu de données Le jeu de données se compose de deux tables. La première est illustrée ci-dessous ; vous pouvez créer cette table en copiant et en exécutant cette requête depuis GitHub. idfirst_namelast_namedepartmentsalary 1PaulGarrixCorporate3,547.25 2AstridFoxPrivate Individuels2,845.56 3MatthiasJohnsonPrivate Individuels3,009.41 4LucyPattersonPrivate Individuels3,547.25 5TomPageCorporate5,974.41 6ClaudiaConteCorporate4,714.12 7WalterDeerPrivate Individuels3,547.25 8StephanieMarxCorporate2,894.51 9LucaPavarottiPrivate Individuels4,123.45 10VictoriaPollockCorporate4,789.53 Comme toute table, elle a un nom : employees. Chaque tableau a des colonnes qui ont également un nom. Ils décrivent les données que chaque colonne contient. Les colonnes et les données du tableau ci-dessus sont les suivantes : id - L'identifiant unique de l'employé et la clé primaire de la table. first_name - Le prénom de l'employé. last_name - Le nom de famille de l'employé. department - Le département de l'employé. salary - Le salaire mensuel de l'employé, en USD. Tout ceci nous indique que cette table est une liste des employés d'une entreprise et de leurs salaires. Il y a également des données sur les départements des employés. Tous les employés travaillent dans la division des ventes, où le département peut être Corporate ou Private Individuels. En d'autres termes, les employés vendent les produits de l'entreprise aux entreprises et aux particuliers. L'autre tableau de l'ensemble de données s'appelle quarterly_sales. Elle est illustrée ci-dessous et la requête permettant de la créer se trouve ici. employee_idq1_2022q2_2022q3_2022q4_2022 83,471.4114,789.253,478.341,254.23 45,417.8112,846.238,741.543,589.99 101,547.521,269.661,478.652,474.33 18,715.558,465.6524,747.823,514.36 312,774.5124,784.3112,223.348,451.51 24,989.235,103.224,897.985,322.05 718,415.6615,279.3714,634.4414,445.12 62,498.638,741.453,997.652,497.21 56,349.747,555.556,944.357,788.01 94,485.364,101.508,787.457,648.90 Les colonnes sont les suivantes : employee_id - L'identifiant unique de l'employé. De plus, une clé étrangère référençant la colonne id de la table employees. q1_2022 - Le chiffre d'affaires réalisé par cet employé au cours du premier trimestre 2022. q2_2022 - Le chiffre d'affaires réalisé par cet employé au cours du deuxième trimestre 2022. q3_2022 - Le chiffre d'affaires réalisé par cet employé au cours du troisième trimestre 2022. q4_2022 - Le chiffre d'affaires réalisé par cet employé au cours du quatrième trimestre 2022. En général, ce tableau est une liste des ventes réalisées au cours de chaque trimestre par chaque employé figurant dans le premier tableau. Commençons maintenant à écrire des requêtes SQL. 1. Sélection de toutes les colonnes d'un tableau Cette requête est utile lorsque vous souhaitez obtenir rapidement toutes les colonnes d'un tableau sans écrire chaque colonne dans l' instruction SELECT. Requête SELECT * FROM employees; Explication Lorsque vous souhaitez sélectionner un nombre quelconque de colonnes dans une table, vous devez utiliser l'instruction SELECT. Vous l'écrivez, de manière assez évidente, en utilisant le mot-clé SELECT. Ce mot-clé est suivi d'un astérisque (*), qui signifie "toutes les colonnes de la table". Pour spécifier la table, utilisez la clause FROM et écrivez le nom de la table à la suite. Sortie La sortie de la requête est le tableau entier employeescomme indiqué ci-dessous. idfirst_namelast_namedepartmentsalary 1PaulGarrixCorporate3,547.25 2AstridFoxPrivate Individuels2,845.56 3MatthiasJohnsonPrivate Individuels3,009.41 4LucyPattersonPrivate Individuels3,547.25 5TomPageCorporate5,974.41 6ClaudiaConteCorporate4,714.12 7WalterDeerPrivate Individuels3,547.25 8StephanieMarxCorporate2,894.51 9LucaPavarottiPrivate Individuels4,123.45 10VictoriaPollockCorporate4,789.53 2. Sélection d'une colonne d'une table Vous pouvez utiliser cette requête lorsque vous n'avez besoin que d'une seule colonne du tableau. Requête SELECT first_name FROM employees; Explication L'approche est similaire à la requête précédente. Cependant, cette fois-ci, au lieu d'un astérisque, nous écrivons le nom de la colonne spécifique dans SELECT. Dans ce cas, il s'agit de la colonne first_name. La deuxième ligne de la requête est la même : elle fait référence à la table dans la clause FROM. Résultat La requête renvoie la liste des prénoms des employés. first_name Paul Astrid Matthias Lucy Tom Claudia Walter Stephanie Luca Victoria 3. Sélection de deux colonnes dans un tableau Cette requête est utile pour sélectionner deux colonnes (ou plus) dans un tableau. Requête SELECT first_name, last_name FROM employees; Explication L'approche est similaire à celle des exemples précédents. Pour sélectionner deux colonnes, vous devez écrire leur nom à l'adresse SELECT. L'important est que les colonnes soient séparées par une virgule. Vous pouvez voir dans l'exemple qu'il y a une virgule entre les colonnes first_name et last_name. Ensuite, comme d'habitude, faites référence au tableau employees dans FROM. Résultat La requête affiche maintenant les noms complets des employés. first_namelast_name PaulGarrix AstridFox MatthiasJohnson LucyPatterson TomPage ClaudiaConte WalterDeer StephanieMarx LucaPavarotti VictoriaPollock 4. Sélection de deux colonnes (ou plus) d'une table et filtrage à l'aide d'une comparaison numérique dans WHERE La connaissance de cette requête SQL vous permettra de filtrer les données en fonction de valeurs numériques. Vous pouvez le faire en utilisant des opérateurs de comparaison dans la clause WHERE. Voici un aperçu des opérateurs de comparaison SQL. Comparison OperatorDescription =Is equal to >Is greater than <Is less than >=Is greater than or equal to <=Is less than or equal to <>Is not equal to Requête SELECT first_name, last_name, salary FROM employees WHERE salary > 3800; Explication La requête sélectionne en fait trois colonnes, et non deux. C'est la même chose qu'avec deux colonnes : il suffit de les écrire dans SELECT et de les séparer par des virgules. Nous faisons ensuite référence à la table dans FROM. Nous devons maintenant afficher uniquement les employés dont le salaire est supérieur à 3 800. Pour ce faire, vous devez utiliser WHERE. Il s'agit d'une clause qui accepte des conditions et qui est utilisée pour filtrer les résultats. Elle parcourt le tableau et renvoie uniquement les données qui satisfont à la condition. Dans notre cas, nous recherchons des salaires "supérieurs" à un certain nombre. En d'autres termes, une condition utilisant l'opérateur de comparaison >. Pour définir la condition, nous écrivons le nom de la colonne à l'adresse WHERE. Vient ensuite l'opérateur de comparaison, puis la valeur à laquelle les données doivent être supérieures. Cette condition renverra tous les salaires supérieurs à 3 800. Résultat La requête renvoie quatre employés et leurs salaires. Comme vous pouvez le constater, ils ont tous un salaire supérieur à 3 800. first_namelast_namesalary TomPage5,974.41 ClaudiaConte4,714.12 LucaPavarotti4,123.45 VictoriaPollock4,789.53 5. Sélection de deux colonnes et filtrage à l'aide d'une condition d'égalité dans WHERE Une fois de plus, cet exemple de requête SQL de base est utile lorsque vous souhaitez sélectionner plusieurs colonnes, mais pas toutes les lignes du tableau. Vous voulez maintenant trouver les valeurs qui sont identiques à la valeur de la condition. Pour cela, vous avez besoin de la condition d'égalité (=). Requête SELECT first_name, last_name FROM employees WHERE first_name = 'Luca'; Explication La requête sélectionne les noms et prénoms des employés. Cependant, nous voulons afficher uniquement les employés dont le nom est Luca. Pour cela, nous utilisons à nouveau WHERE. L'approche est similaire à celle de l'exemple précédent : nous utilisons WHERE, écrivons le nom de la colonne et utilisons l'opérateur de comparaison. Cette fois, notre condition utilise le signe égal (=). En d'autres termes, les valeurs de la colonne first_name doivent être égales à Luca. De plus, lorsque la condition n'est pas un nombre mais un texte ou une date/heure, elle doit être écrite entre guillemets simples (''). C'est pourquoi notre condition s'écrit 'Luca', et non simplement Luca. Sortie La sortie montre qu'il n'y a qu'un seul employé nommé Luca, et que son nom complet est Luca Pavarotti. first_namelast_name LucaPavarotti 6. Sélection de deux colonnes et classement par une colonne Voici un autre exemple de requête SQL de base qui vous sera utile. Il peut être utilisé chaque fois que vous devez ordonner le résultat d'une certaine manière pour le rendre plus lisible. L'ordre ou le tri des résultats est effectué à l'aide de la clause ORDER BY. Par défaut, elle ordonne les résultats par ordre croissant, par ordre alphabétique (pour les données textuelles), du plus petit au plus grand nombre (pour les données numériques), ou de la date ou de l'heure la plus ancienne à la plus récente (pour les dates et les heures). Requête SELECT first_name, last_name FROM employees ORDER BY last_name; Explication Nous sélectionnons à nouveau le nom et le prénom des employés. Mais nous voulons maintenant trier les résultats d'une manière spécifique. Dans cet exemple, il s'agit du nom de famille des employés. Pour ce faire, nous utilisons ORDER BY. Nous y inscrivons simplement le nom de la colonne. Nous pouvons ajouter le mot-clé ASC pour trier le résultat de manière ascendante. Cependant, ce n'est pas obligatoire, car le tri ascendant est une valeur par défaut de SQL. Résultat La requête renvoie une liste d'employés classés par ordre alphabétique de leur nom de famille. first_namelast_name ClaudiaConte WalterDeer AstridFox PaulGarrix MatthiasJohnson StephanieMarx TomPage LucyPatterson LucaPavarotti VictoriaPollock 7. Sélection de deux colonnes et tri descendant d'une colonne Cet exemple est similaire au précédent et a le même objectif : trier le résultat de votre requête SQL. Cependant, dans ce cas, les données sont classées par ordre décroissant (Z à A, 10 à 1). Requête SELECT first_name, last_name FROM employees ORDER BY last_name DESC; Explication La requête est presque exactement la même que dans l'exemple précédent. La seule différence est que nous classons les données par ordre décroissant du nom de l'employé. Pour ce faire, placez le mot-clé DESC après la colonne last_name dans la clause ORDER BY. Résultat first_namelast_name VictoriaPollock LucaPavarotti LucyPatterson TomPage StephanieMarx MatthiasJohnson PaulGarrix AstridFox WalterDeer ClaudiaConte Vous pouvez voir que le résultat est ordonné comme nous le souhaitions. 8. Sélection de deux colonnes d'une table et classement décroissant de deux colonnes Le tri d'une requête SQL peut être plus sophistiqué. Il est courant de trier des données sur deux colonnes ou plus, ce qui vous est probablement déjà familier en tant qu'utilisateur d'Excel ou de Google Sheets. Il est possible de faire la même chose en SQL. Requête SELECT first_name, last_name, salary FROM employees ORDER BY salary DESC, last_name ASC; Explication Avec cette requête, nous nous appuyons sur l'exemple précédent ; nous voulons trier les résultats en fonction du salaire de l'employé et de son nom de famille. Cette fois, nous trions par salaire en ordre décroissant, puis par nom de famille en ordre croissant. Nous référençons la colonne salaire dans ORDER BY et la faisons suivre du mot-clé DESC. Le mot-clé DESC indique l'ordre décroissant. Avant le deuxième critère de tri, nous devons placer une virgule. Elle est suivie du deuxième critère/colonne, qui est dans ce cas last_name. Vous pouvez ajouter ou omettre le mot-clé ASC pour trier le résultat par ordre croissant. Remarque : l'ordre des colonnes dans ORDER BY est important ! La requête rédigée comme ci-dessus sera d'abord triée par salaire en ordre décroissant, puis par nom de famille en ordre croissant. Si vous écrivez ORDER BY last_name ASC, salary DESC, le tri se fera d'abord sur le nom de famille, puis sur le salaire, dans l'ordre décroissant. Résultats first_namelast_namesalary TomPage5,974.41 VictoriaPollock4,789.53 ClaudiaConte4,714.12 LucaPavarotti4,123.45 WalterDeer3,547.25 PaulGarrix3,547.25 LucyPatterson3,547.25 MatthiasJohnson3,009.41 StephanieMarx2,894.51 AstridFox2,845.56 Les résultats sont classés par salaire. Lorsque le salaire est identique (lignes vertes), les données sont classées par ordre alphabétique du nom de famille. 9. Sélection de deux colonnes avec une condition logique complexe dans WHERE Cet exemple montre à nouveau comment filtrer les résultats à l'aide de WHERE. Il sera un peu plus avancé cette fois-ci, car nous utiliserons un opérateur logique. En SQL, les opérateurs logiques vous permettent de tester si la condition de filtrage est vraie ou non. Ils permettent également de définir des conditions multiples. Les trois opérateurs logiques de base en SQL sont AND, OR et NOT. Dans la requête ci-dessous, nous utiliserons OR pour obtenir les salaires inférieurs à 3 000 ou supérieurs à 5 000. Requête SELECT first_name, last_name, salary FROM employees WHERE salary > 5000 OR salary < 3000; Explication Nous utilisons cette requête pour sélectionner le prénom, le nom et le salaire de l'employé dans la table employees. Cependant, nous voulons afficher uniquement les employés dont les salaires sont supérieurs à 5 000 $ ou inférieurs à 3 000 $. Pour ce faire, nous utilisons l'opérateur logique OR et les opérateurs de comparaison de WHERE. Nous écrivons la première condition dans WHERE, où nous faisons référence à la colonne salary et définissons la condition selon laquelle les valeurs doivent être supérieures à 5 000. Nous utilisons ensuite l'opérateur OR, suivi de la deuxième condition. La deuxième condition fait à nouveau référence à la colonne des salaires et utilise l'opérateur "inférieur à" pour renvoyer les valeurs inférieures à 3 000. Sortie first_namelast_namesalary AstridFox2,845.56 TomPage5,974.41 StephanieMarx2,894.51 La requête ne renvoie que trois employés et leurs salaires, car ce sont les seuls qui remplissent les conditions. 10. Calculs simples sur les colonnes Dans cet exemple, nous allons montrer comment vous pouvez effectuer des opérations mathématiques simples sur les colonnes de la table. Nous utiliserons l'un des opérateurs arithmétiques de SQL. Arithmetic OperatorDescription +Addition -Subtraction *Multiplication /Division %Modulo, i.e. returns the remainder of the integer division. Requête SELECT employee_id, q1_2022 + q2_2022 AS h1_2022 FROM quarterly_sales; Explication Dans la requête ci-dessus, nous voulons trouver les ventes du premier semestre 2022 pour chaque employé. Pour ce faire, nous sélectionnons d'abord la colonne employee_id dans la table quarterly_sales. Ensuite, nous sélectionnons la colonne q1_2022 et utilisons l'opérateur arithmétique d'addition pour ajouter la colonne q2_2022. Nous donnons également à cette nouvelle colonne calculée un alias de h1_2022 en utilisant le mot-clé AS. Résultat employee_idh1_2022 818,260.66 418,264.04 102,817.18 117,181.20 337,558.82 210,092.45 733,695.03 611,240.08 513,905.29 98,586.86 La sortie montre les identifiants de tous les employés et leurs ventes respectives au cours du premier semestre 2022. 11. Utilisation de SUM() et GROUP BY Cette requête utilise la fonction d'agrégation SUM() avec GROUP BY. En SQL, les fonctions d'agrégation fonctionnent sur des groupes de données ; par exemple, SUM(sales) affiche le total de toutes les valeurs de la colonne sales. Il est utile de connaître cette fonction lorsque vous voulez placer des données dans des groupes et afficher le total pour chaque groupe. Requête SELECT department, SUM(salary) AS total_salaries FROM employees GROUP BY department; Explication L'objectif de la requête ci-dessus est de trouver le montant total des salaires pour chaque département. Cet objectif est atteint de la manière suivante. Tout d'abord, sélectionnez la colonne département dans le tableau employees. Ensuite, utilisez la fonction SUM(). Comme nous voulons additionner les valeurs salariales, nous spécifions la colonne salaire dans la fonction. De plus, nous donnons à cette colonne calculée l'alias total_salaries. Enfin, la sortie est groupée par la colonne département. Remarque : toute colonne non agrégée apparaissant dans SELECT doit également apparaître dans GROUP BY. Mais c'est logique - l'objectif est de regrouper les données par département, donc nous la placerons bien sûr dans GROUP BY. Sortie departmenttotal_salaries Corporate21,919.82 Private Individuels17,072.92 La sortie montre tous les départements et la somme des coûts salariaux mensuels totaux par département. 12. Utilisation de COUNT() et GROUP BY Voici une autre requête SQL de base qui utilise une fonction d'agrégation. Cette fois, il s'agit de COUNT(). Vous pouvez l'utiliser si vous souhaitez regrouper des données et afficher le nombre d'occurrences dans chaque groupe. Requête SELECT department, COUNT(*) AS employees_by_department FROM employees GROUP BY department; Explication Nous voulons afficher le nombre d'employés par département. Sélectionnez le département dans le tableau employees. Ensuite, utilisez la fonction d'agrégation COUNT(). Dans ce cas, nous utilisons la version COUNT(*), qui compte toutes les lignes. Nous donnons à la colonne l'alias employees_by_department. Enfin, nous regroupons les résultats par département. Note : COUNT(*) compte toutes les lignes, y compris celles avec les valeurs NULL. Si vous ne souhaitez pas inclure les éventuelles valeurs NULL dans votre résultat, utilisez la version COUNT(column_name) de la fonction. Nous pouvons utiliser COUNT(*) ici car nous savons qu'il n'y a pas de valeurs NULL dans le tableau. Résultat departmentemployees_by_department Corporate5 Private Individuels5 Il y a deux départements, chacun avec cinq employés. 13. Utilisation de AVG() et GROUP BY La fonction AVG() calcule la valeur moyenne. Vous pouvez utiliser cette requête chaque fois que vous souhaitez regrouper des données et afficher la valeur moyenne pour chaque groupe. Requête SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department; Explication La requête est la même que la précédente, mais cette fois nous utilisons la fonction AVG(), car nous voulons calculer le salaire moyen par département. Nous sélectionnons le département, utilisons AVG() avec la colonne salary et regroupons les résultats par département. Résultat departmentaverage_salary Corporate4,383.96 Private Individuels3,414.58 La sortie montre deux départements et leurs salaires moyens. 14. Utilisation de MIN() et de GROUP BY Il s'agit d'une autre requête qui combine une fonction d'agrégation avec GROUP BY. Utilisez-la chaque fois que vous souhaitez trouver les valeurs minimales pour chaque groupe. Requête SELECT department, MIN(salary) AS minimum_salary FROM employees GROUP BY department; Explication Nous utilisons à nouveau la même requête et modifions uniquement la fonction d'agrégation. La requête calcule le salaire minimum par département. Résultats departmentminimum_salary Corporate2,894.51 Private Individuels2,845.56 La sortie montre les départements et le salaire le plus bas dans chaque département. 15. Utilisation de MAX() et de GROUP BY Cet exemple montre comment utiliser la fonction d'agrégation MAX() pour afficher la valeur la plus élevée dans chaque groupe. Requête SELECT department, MAX(salary) AS maximum_salary FROM employees GROUP BY department; Explication Nous utilisons la requête pour afficher le salaire le plus élevé dans chaque département, ainsi que le nom du département. Vous savez déjà comment cela fonctionne. La requête est la même que dans l'exemple précédent, mais elle utilise maintenant la fonction MAX(). Résultat departmentmaximum_salary Corporate5,974.41 Private Individuels4,123.45 La sortie nous indique les salaires les plus élevés dans le département "Entreprises et particuliers" Individuel. 16. Utilisation de SUM(), WHERE et GROUP BY Cette requête peut sembler plus compliquée, mais il s'agit toujours d'une requête SQL de base. Elle est utilisée lorsque vous souhaitez afficher les valeurs totales pour chaque groupe, mais que vous ne voulez inclure que des lignes spécifiques dans la somme. Requête SELECT department, SUM(salary) AS total_salary FROM employees WHERE salary > 3500 GROUP BY department; Explication La requête affichera le salaire total par département, mais n'inclura dans la somme que les salaires individuels supérieurs à 3 500 $. Voici comment cela fonctionne. Tout d'abord, bien sûr, sélectionnez les départements et utilisez SUM() avec la colonne des salaires de la table employees. Vous l'avez déjà appris. Ensuite, utilisez la clause WHERE pour spécifier les valeurs que vous voulez inclure dans la somme. Dans le cas présent, il s'agit des cas où la colonne salaire est supérieure à 3 500. En d'autres termes, la requête n'additionnera que les valeurs supérieures à 3 500. Enfin, regroupez les données par département. Résultat departmenttotal_salary Private Individuels11,217.95 Corporate19,025.31 Ces totaux n'incluent plus que les salaires supérieurs à 3 500 $. Comparez ce résultat à celui du onzième exemple (illustré ci-dessous ; remarquez le tri différent), et vous verrez que les totaux sont inférieurs. C'est logique, car la sortie ci-dessous inclut également les salaires inférieurs ou égaux à 3 500 $. departmenttotal_salaries Corporate21,919.82 Private Individuels17,072.92 17. Utilisation de COUNT(), WHERE et GROUP BY Cette requête fait également partie de celles que nous vous conseillons d'inclure dans votre boîte à outils SQL. Elle est similaire à la précédente, car elle utilise une fonction d'agrégation. Ce type de requête peut être utilisé lorsque vous souhaitez afficher le nombre d'occurrences pour chaque groupe. Requête SELECT department, COUNT(*) AS number_of_employees FROM employees WHERE salary > 3500 GROUP BY department; Explication Cette requête est similaire à la précédente, mais elle utilise la fonction d'agrégation COUNT(). Son objectif est d'afficher le nom du département et le nombre d'employés dans ce département, mais elle ne compte que les employés dont le salaire est supérieur à 3 500 $. Pour y parvenir, il faut d'abord sélectionner le département. Ensuite, utilisez COUNT(*) pour compter toutes les lignes de chaque département. Chaque ligne correspond à un employé. Nous sommes libres d'utiliser cette version de la fonction COUNT() car nous savons qu'il n'y a pas de lignes NULL. Utilisez maintenant WHERE pour ne compter que les employés dont le salaire est supérieur à 3500 $. En fin de compte, vous n'avez besoin de regrouper les données que par département. Résultat departmentnumber_of_employees Private Individuels3 Corporate4 Le résultat montre qu'il y a trois employés dans le département "Private Individuel" dont le salaire est supérieur à 3 500 $ et qu'il y a quatre employés de ce type dans le département "Corporate". Certains employés sont manifestement absents, comme il se doit. Nous avons appris dans l'un des exemples précédents qu'il y a cinq employés dans chaque département. 18. Accès aux données de deux tables à l'aide d'une jointure interne (INNER JOIN) Ce type de requête est utilisé lorsque vous souhaitez accéder à des données provenant de deux tables ou plus. Nous allons vous présenter INNER JOIN, mais ce n'est pas le seul type de jointure que vous pouvez utiliser. Voici un bref aperçu des types de jointures en SQL. Il s'agit des noms complets des jointures. Ce qui est indiqué entre parenthèses peut être omis dans la requête et la jointure fonctionnera sans cela. SQL Join TypeDescription (INNER) JOINReturns the matching values from both tables. LEFT (OUTER) JOINReturns all the values from the left table and only the matching values from the right table. RIGHT (OUTER) JOINReturns all the values from the right table and only the matching values from the left table. FULL (OUTER) JOINReturns all the rows from both tables. CROSS JOINReturns all combinations of all rows from the first and second table, i.e. the Cartesian product. Requête SELECT e.id, e.first_name, e.last_name, qs.q1_2022 + qs.q2_2022 + qs.q3_2022 + qs.q4_2022 AS total_sales_2022 FROM employees e JOIN quarterly_sales qs ON e.id = qs.employee_id; Explication Cette requête veut afficher l'ID et le nom de chaque employé, ainsi que leur chiffre d'affaires total en 2022. Pour cela, elle utilise JOIN, car les données requises se trouvent dans les deux tables de notre ensemble de données. Commençons par expliquer la requête avec la clause FROM. Elle est familière : pour utiliser les données de la table employeesvous devez y faire référence dans FROM. Nous donnons également à cette table un alias ('e'), afin de ne pas avoir à écrire le nom complet de la table par la suite. Ensuite, nous utilisons le mot-clé JOIN pour joindre la deuxième table. Pour ce faire, nous référençons la table quarterly_sales dans JOIN et en lui donnant l'alias 'qs'. Vient ensuite la condition ON. Elle est utilisée pour spécifier les colonnes sur lesquelles les deux tables seront jointes. En général, il s'agit des colonnes qui stockent les mêmes données dans les deux tables. En d'autres termes, nous joignons les tables sur les clés primaires et étrangères. Une clé primaire est une colonne (ou des colonnes) qui définit de manière unique chaque ligne de la table. Une clé étrangère est une colonne de la deuxième table qui fait référence à la première table. Dans notre exemple, la colonne id de la table employees est sa clé primaire. La colonne employee_id de la table quarterly_sales est la clé étrangère, car elle contient la valeur de la colonne id de la première table. Nous utiliserons donc ces colonnes dans ON, mais nous devons également spécifier de quelle table provient chaque colonne. Rappelez-vous que nous avons donné des alias à nos tables. Cela sera utile ici, car nous n'aurons pas besoin d'écrire les noms complets des tables - seulement une lettre pour chaque table. Nous écrivons l'alias de la première table (au lieu de son nom complet), nous les séparons par un point, puis le nom de la colonne. Nous mettons le signe égal, l'alias de la deuxième table et le nom de la colonne. Maintenant que nous avons joint deux tables, nous sommes libres de sélectionner n'importe quelle colonne dans les deux tables. Nous sélectionnons id, first_name, et last_name à partir de employees. Nous ajoutons ensuite chaque colonne de la table quarterly_sales indiquant les ventes trimestrielles et nous la nommons total_sales_2022. Chaque colonne de SELECT est également précédée de l'alias de la table, l'alias et le nom de la colonne étant séparés par un point. Remarque : lors de la jonction de tables, il est conseillé d'utiliser les noms des tables devant les noms des colonnes dans SELECT est conseillée. Il sera ainsi plus facile de déterminer quelle colonne provient de quelle table. En outre, les tables peuvent avoir des colonnes portant le même nom. Cependant, les noms de tables peuvent devenir verbeux, c'est pourquoi il est également conseillé de leur donner des alias dans JOIN. De cette façon, vous pouvez utiliser des alias beaucoup plus courts (au lieu des noms complets des tables) devant les noms des colonnes. Résultats idfirst_namelast_nametotal_sales_2022 8StephanieMarx22,993.23 4LucyPatterson30,595.57 10VictoriaPollock6,770.16 1PaulGarrix45,443.38 3MatthiasJohnson58,233.67 2AstridFox20,312.48 7WalterDeer62,774.59 6ClaudiaConte17,734.94 5TomPage28,637.65 9LucaPavarotti25,023.21 La sortie répertorie chaque employé et indique le total de ses ventes en 2022. 19. Accès aux données de deux tables à l'aide de la fonction INNER JOIN et filtrage à l'aide de la fonction WHERE Bien entendu, vous pouvez filtrer les données dans des tables jointes de la même manière qu'avec une seule table. Vous aurez à nouveau besoin de la clause WHERE. Requête SELECT e.id, e.first_name, e.last_name, qs.q4_2022-qs.q3_2022 AS sales_change FROM employees e JOIN quarterly_sales qs ON e.id = qs.employee_id WHERE qs.q4_2022-qs.q3_2022 < 0; Explication Nous avons modifié la requête précédente pour montrer la diminution des ventes entre le troisième et le quatrième trimestre. Voici comment nous avons procédé. Comme nous l'avons fait précédemment, nous avons sélectionné l'ID et le nom de l'employé. Nous avons soustrait un trimestre d'un autre pour calculer la variation entre les trimestres. Dans ce cas, il s'agit de la colonne des ventes du quatrième trimestre moins les ventes du troisième trimestre. Cette nouvelle colonne s'appelle sales_change. Les tableaux sont reliés exactement de la même manière que dans l'exemple précédent. Pour ne montrer que la baisse des ventes, nous utilisons la clause WHERE. Dans cette clause, nous soustrayons à nouveau le troisième trimestre du quatrième et posons comme condition que le résultat doit être inférieur à zéro, c'est-à-dire qu'il doit s'agir d'une baisse. Comme vous l'avez remarqué, WHERE intervient après la jointure des tables. Résultats idfirst_namelast_namesales_change 8StephanieMarx-2,224.11 4LucyPatterson-5,151.55 1PaulGarrix-21,233.46 3MatthiasJohnson-3,771.83 7WalterDeer-189.32 6ClaudiaConte-1,500.44 9LucaPavarotti-1,138.55 Le résultat indique tous les employés dont les ventes ont diminué au cours du dernier trimestre et le montant de cette diminution. 20. Accès aux données de deux tables à l'aide de la fonction INNER JOIN, du filtrage à l'aide de la fonction WHERE et du tri à l'aide de la fonction ORDER BY Vous avez probablement remarqué que les résultats de nos deux derniers exemples sont triés de manière un peu aléatoire. Ce n'est pas une fatalité : vous pouvez ordonner les données à l'aide de ORDER BY, même lorsque vous utilisez deux tables. Requête SELECT e.id, e.first_name, e.last_name, qs.q4_2022 FROM employees e JOIN quarterly_sales qs ON e.id = qs.employee_id WHERE qs.q4_2022 > 5000 ORDER BY qs.q4_2022 DESC; Explication La requête n'est pas très différente de la précédente. Nous sélectionnons à nouveau l'ID et le nom de l'employé. Nous ajoutons également les ventes du dernier trimestre de l'année. Les tables sont ensuite reliées de la même manière que précédemment. Nous utilisons la clause WHERE pour n'afficher que les ventes trimestrielles supérieures à 5 000 $. Nous voulons également trier les résultats. Ce n'est pas différent de ce que nous avons appris précédemment : il suffit d'écrire le nom de la colonne dans ORDER BY et de la trier comme vous le souhaitez. Dans notre exemple, nous trions du chiffre d'affaires trimestriel le plus élevé au plus bas. Résultat idfirst_namelast_nameq4_2022 7WalterDeer14,445.12 3MatthiasJohnson8,451.51 5TomPage7,788.01 9LucaPavarotti7,648.90 2AstridFox5,322.05 La sortie affiche les cinq employés dont les ventes ont été supérieures à 5 000 $ au cours des trois derniers mois de 2022. Des requêtes SQL de base à la maîtrise de SQL Si vous voulez maîtriser le langage SQL, vous devez être à l'aise avec ces 20 requêtes SQL de base. Ce sont les bases qui vous permettront d'acquérir de solides connaissances en SQL. Ce type de connaissances s'acquiert avec beaucoup de pratique et d'expérience. En d'autres termes, il vous suffit d'écrire les requêtes vous-même. Vous consoliderez ainsi tous les concepts que vous avez appris ici. En cours de route, vous ferez probablement beaucoup d'erreurs. C'est souhaitable, car il n'y a pas de meilleure façon d'apprendre que d'essayer de corriger ses propres erreurs. Pour cela, vous aurez besoin de nombreux exemples de requêtes. Non, il n'est pas nécessaire de créer vos propres exemples, comme nous l'avons fait ici. Vous pouvez le faire si vous le souhaitez. Mais nous l'avons déjà fait pour vous dans notre SQL pour les débutants cours. Il regorge d'exemples de requêtes SQL de base ! Essayez-le, et nous sommes sûrs que vous ne le regretterez pas ! Tags: sql requêtes sql