Accéder au contenu principal

Exemples de requêtes SQL et didacticiel

Si vous souhaitez vous initier à SQL, nous avons tout ce qu'il vous faut. Dans ce tutoriel SQL, nous allons vous présenter les requêtes SQL - un outil puissant qui nous permet de travailler avec les données stockées dans une base de données.
Actualisé 14 nov. 2024  · 21 min de lecture

Qu'est-ce qu'une requête SQL ?

SQL est l'abréviation de Structured Query Language (langage de requête structuré). Les gens le prononcent souvent comme "S-Q-L" ou "sequel". SQL est utilisé en programmation et est conçu pour gérer les données stockées dans une base de données à l'aide de requêtes SQL

Le type le plus courant de système de gestion de base de données(SGBD) est le système de gestion de base de données relationnelle(SGBDR), dans lequel nous stockons des données structurées, c'est-à-dire des données incorporant des relations entre des entités et des variables. Ces entités et variables sont organisées sous la forme d'un ensemble de tableaux avec des colonnes et des lignes. Parmi les SGBDR les plus populaires, citons MYSQL, Oracle, IBM DB2 et Microsoft SQL Server.

Dans un SGBDR, les données sont stockées dans un objet de base de données appelé tableau. Une base de données contient souvent plusieurs tableaux. Chaque tableau est identifié par un nom unique et contient une collection d'entrées de données connexes structurées en lignes et en colonnes. 

Une colonne est une entité verticale ; elle est appelée champ et contient toutes les informations associées à un champ spécifique dans un tableau. Chaque ligne d'un tableau est appelée enregistrement; il s'agit de l'entité horizontale du tableau.

La structure d'une base de données peut ressembler à celle d'Excel. Toutefois, les bases de données sont généralement plus puissantes que les feuilles de calcul Excel. Voici trois raisons pour lesquelles vous pouvez l'affirmer : 

  1. Les bases de données peuvent interagir avec de nombreux autres langages de programmation, ce qui permet au programmeur de gérer et d'extraire des informations à partir des données.
  2. Les bases de données peuvent traiter plus de données que les feuilles de calcul d'Excel. Excel peut traiter jusqu'à 1 million de lignes de données, alors qu'une base de données peut traiter plus d'un milliard de lignes.
  3. Les bases de données peuvent être plus facilement connectées à l'internet, ce qui permet à des centaines d'utilisateurs et d'applications d'y accéder simultanément.

Vous êtes impatient de commencer à utiliser SQL ? DataCamp dispose d'un matériel extraordinaire pour vous aider à démarrer ; learn SQL met en évidence les pistes que vous pouvez suivre pour perfectionner vos compétences en SQL !

Plongeons maintenant plus profondément dans les requêtes SQL... 

Une requête SQL est une instruction construite en combinant plusieurs commandes SQL. Ces commandes SQL exécutent ensemble une tâche spécifique pour accéder, gérer, modifier, mettre à jour, contrôler et organiser vos données stockées dans une base de données et gérées par un SGBD. 

Pourquoi utiliser SQL ?

Le langage SQL est incroyablement polyvalent et est utilisé par tous, des scientifiques des données aux ingénieurs, en passant par les spécialistes du marketing et les équipes de ressources humaines - en fait, par tous ceux qui souhaitent simplement maîtriser les données !

Elle n'est pas seulement utilisée dans les industries technologiques ou limitée aux grandes entreprises. De nombreuses industries de toutes tailles l'utilisent directement ou indirectement. Par exemple, les professionnels travaillant dans les secteurs de la finance et de la santé utilisent souvent SQL, étant donné la grande quantité de données qu'ils produisent. 

Les données sont la nouvelle marchandise, et SQL est un outil très puissant lorsqu'il s'agit de manipuler et de travailler avec des données volumineuses. Vous vous demandez comment tirer le meilleur parti de SQL ? Consultez le tutoriel What can you do with SQL de DataCamp pour vous aider à répondre à cette question.

Comment écrire des requêtes SQL

Avant d'aborder la formulation de la requête elle-même, examinons la question : "Où dois-je écrire et exécuter ma requête SQL ? 

Le hub Learn SQL de DataCamp peut être un bon point de départ pour permettre de travailler avec SQL sur une machine Mac ou Windows et de démarrer.

Mais si vous souhaitez simplement commencer à apprendre le langage natif des bases de données - SQL, vous pouvez commencer par le cours Introduction à SQL de DataCamp. Ce cours enseigne la syntaxe SQL partagée par de nombreux types de bases de données, telles que PostgreSQL, MySQL, SQL Server et Oracle. Vous travaillerez avec l'interface SQL intégrée de DataCamp et n'aurez pas à gérer les problèmes de configuration initiale d'un SGBDR. 

DataCamp dispose également d'un outil de carnet de notes génial qui vous permet de créer vos propres carnets de notes : DataLab. DataLab est un bloc-notes collaboratif basé sur le cloud qui vous permet d'analyser des données, de collaborer avec votre équipe et de partager des idées. DataLab est conçu pour vous permettre de passer de l'apprentissage de la science des données à la pratique de la science des données. Grâce aux ensembles de données intégrés, vous pouvez commencer à analyser des données en quelques minutes.

Jetons maintenant un coup d'œil à l'ensemble de données avec lequel nous allons travailler dans ce tutoriel. 

Nous commencerons par "films", un tableau SQL contenant les données de 10 films. Ces données ne sont qu'un petit sous-ensemble des données de l'ensemble de données IMDb Film utilisé dans le cours d'introduction à SQL de DataCamp que nous avons mentionné plus haut.

 

title

release_year

budget

brut

imdb_score

1

Le Parrain

1972

6000000

134821952

9.2

2

Le chevalier noir

2008

185000000

533316061

9

3

Le Parrain : Partie II

1974

13000000

57300000

9

4

La liste de Schindler

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

Le Seigneur des Anneaux : Le retour du roi

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

La guerre des étoiles : Épisode V - L'Empire contre-attaque

1980

18000000

290158751

8.8

10

La rédemption de Shawshank

1994

25000000

28341469

9.3

Le tableau "films" contient dix enregistrements - les noms des films sont stockés sur dix rangées. Les champs sont les cinq colonnes du tableau qui contiennent les informations relatives au film. 

  • titre" est le nom du film
  • release_year" est l'année de sortie du film.
  • Le "budget" est le coût de production du film en dollars américains.
  • Le "brut" est le montant que le film a rapporté en dollars américains. 
  • imdb_score" indique les notes obtenues à partir des votes soumis par les utilisateurs d'IMDb, et non par les critiques de cinéma. 

Commençons l'exercice avec quelques commandes SQL de base, en les utilisant pour explorer le tableau "films" ci-dessus. Nous n'attendons pas de vous que vous exécutiez immédiatement les requêtes de la solution... mais plutôt que vous l'utilisiez comme base pour apprendre certains concepts clés. Ne vous inquiétez donc pas si vous n'avez pas encore choisi la plateforme à partir de laquelle vous souhaitez exécuter les requêtes.

Requêtes SQL de base

Gardez à l'esprit que les mots-clés ou les commandes SQL ne sont pas sensibles à la casse ; écrire "select" revient à écrire "SELECT". 

Nous utiliserons un point-virgule à la fin de chaque instruction SQL que nous écrivons. C'est la norme dans certains systèmes de base de données, et cela permet de séparer chaque instruction SQL afin qu'elles puissent être exécutées lors du même appel au serveur. 

Commençons par une question. Q1 : Quels sont les films stockés dans le tableau ?

SELECT - FROM

L'instruction SELECT est utilisée pour choisir les champs que vous souhaitez voir apparaître dans le tableau de la base de données. Pour Q1, vous voulez le champ "titre".

La commande/mot-clé FROM spécifie le tableau spécifique de la base de données à partir duquel vous souhaitez extraire les données. N'oubliez pas qu'une base de données peut être constituée de plusieurs tableaux.

Syntaxe : SELECT column1, column2, ... FROM table_name ;

Requête SQL : SELECT title FROM films ;

Résultat : 

 

title

1

Le Parrain

2

Le chevalier noir

3

Le Parrain : Partie II

4

La liste de Schindler

5

Pulp Fiction

6

Le Seigneur des Anneaux : Le retour du roi

7

Fight Club

8

Inception

9

La guerre des étoiles : Épisode V - L'Empire contre-attaque

10

La rédemption de Shawshank

Vous vous demandez peut-être ce qui se passe si vous n'avez jamais vu le tableau ci-dessus et que vous ne connaissez donc pas le nom des colonnes à spécifier dans l'instruction SELECT. C'est un bon point ! Nous reviendrons sur la magie du "*" (astérisque) un peu plus loin dans ce tutoriel. 

Q2 : Quels sont les films qui sortiront en 2010 ?

Pour cette question, vous souhaitez "filtrer" les films afin d'obtenir des noms de films qui remplissent la condition suivante : "release_year" est 2010. 

Vous pouvez utiliser la clause "WHERE" pour extraire uniquement les enregistrements qui remplissent une condition donnée.

Syntaxe : SELECT column1, column2, ... FROM nom_table WHERE condition ; 

Requête SQL: SELECT titre, année de sortie FROM films WHERE année de sortie = 2010 ;

Résultat

 

title

release_year

1

Inception

2010

Opérateurs dans la clause WHERE

Les opérateurs suivants peuvent être utilisés dans la clause WHERE :

Opérateur

Description

=

Egale à

>

Supérieur à

<

Moins de

>=

Supérieur ou égal

<=

Inférieur ou égal

<> ou !=

Pas d'égalité. 

ENTRE

Entre une certaine fourchette

LIKE

Recherche d'un motif correspondant au motif donné

IN

Spécifie plusieurs valeurs possibles 

L'arithmétique dans SQL

Vous pouvez effectuer des opérations arithmétiques simples en SQL en utilisant les symboles mathématiques : +, -, *, /. Cependant, vous ne pouvez effectuer des opérations sur les colonnes qu'à l'aide de ces symboles arithmétiques. Vous pouvez également utiliser des parenthèses pour gérer l'ordre des opérations.

Mais n'ayez crainte, pour les opérations plus complexes, SQL dispose de fonctions d'agrégation qui vous permettent d'effectuer des opérations au sein d'une même ligne. Nous aborderons ce sujet plus loin dans le tutoriel.

Q3 : Calculez le bénéfice réalisé par chaque film dans le tableau "films". 

Indice : Effectuez le calcul Brut - Budget et enregistrez le résultat dans une colonne appelée 'movie_profit' en utilisant AS

Requête SQL: SELECT titre, (brut - budget) AS movie_profit FROM films

Résultat

 

title

movie_profit

1

Le Parrain

128821952

2

Le chevalier noir

348316061

3

Le Parrain : Partie II

44300000

4

La liste de Schindler

74067179

5

Pulp Fiction

99930000

6

Le Seigneur des Anneaux : Le retour du roi

283019252

7

Fight Club

-25976605

8

Inception

132568851

9

La guerre des étoiles : Épisode V - L'Empire contre-attaque

272158751

10

La rédemption de Shawshank

3341469

Avis de non-responsabilité: Les cinéphiles seront peut-être dérangés par les bénéfices négatifs de Fight Club. La formule utilisée ((brut - budget) AS movie_profit) est très simple et, compte tenu de la formule et des données, le résultat est correct. 

Mais l'exemple ci-dessus a pour but de vous rappeler de faire attention au processus de collecte des données ! Même une simple exploration des données peut révéler des erreurs de données qui peuvent être dues à une erreur dans le processus de collecte ou de stockage des données (changement de type de données, etc.) - comme cela a pu être le cas lors de la création de l'ensemble de données utilisé. 

Faites toujours attention aux données avec lesquelles vous travaillez !

ET, OU, NON

La clause WHERE peut être combinée avec d'autres clauses conditionnelles à l'aide des opérateurs AND, OR et NOT. Les opérateurs AND et OR sont utilisés pour filtrer les enregistrements sur la base de plusieurs conditions, et l'opérateur NOT est utilisé pour annuler une condition. 

Voyons leur utilisation à l'aide d'exemples :

Q4 : Quels sont les films qui sortiront en 2010 et dont la note est supérieure à 9 ?

Syntaxe : SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND condition3 AND condition4..... ;

Requête SQL: SELECT titre, année de sortie, imdb_score FROM films WHERE année de sortie = 2010 AND imdb_score >= 9 ;

L'opérateur AND affiche un enregistrement si toutes les conditions séparées par AND sont vraies.

Dans le tableau 'films', nous avons le film 'Inception'. C'est la seule valeur qui est vraie pour release_year = 2010, mais elle est fausse pour imdb_score >= 9 et ne remplit donc pas la condition ET. La requête renvoie donc un ensemble de résultats vide.

Q5 : Quels sont les films qui sortiront en 2010 ou qui ont une note supérieure à 9 ?

Syntaxe : SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR condition3 OR condition4..... ;

Requête SQL: SELECT titre, année de sortie, imdb_score FROM films WHERE année de sortie = 2010 OR imdb_score >= 9 ;

Résultat

 

title

release_year

imdb_score

1

Le Parrain

1972

9.2

2

Le chevalier noir

2008

9

3

Le Parrain : Partie II

1974

9

4

Inception

2010

8.8

5

La rédemption de Shawshank

1994

9.3

L'opérateur OR affiche un enregistrement si l'une des conditions séparées par OR est VRAIE.

Les films : Le Parrain, Le Chevalier Noir, Le Parrain : Part II, The Shawshank Redemption sont vrais pour imdb_score >= 9, tandis que Inception est vrai pour release_year = 2010, et ils sont donc retenus pour la condition OR.

Q6 : Quels sont les films dont l'année de sortie est différente de 2010 ?

Syntaxe : SELECT column1, column2, ... FROM nom_table WHERE NOT condition1 ;

Requête SQL: SELECT title, release_year FROM films WHERE NOT release_year = 2010 ;

Résultat

 

title

release_year

1

Le Parrain

1972

2

Le chevalier noir

2008

3

Le Parrain : Partie II

1974

4

La liste de Schindler

1993

5

Pulp Fiction

1994

6

Le Seigneur des Anneaux : Le retour du roi

2003

7

Fight Club

1999

8

La guerre des étoiles : Épisode V - L'Empire contre-attaque

1980

9

La rédemption de Shawshank

1994

Vous pouvez également écrire : SELECT title, release_year FROM films WHERE release_year != 2010 ;

Vous obtiendrez le même résultat que ci-dessus.Il peut y avoir plusieurs façons d'obtenir le même résultat en SQL. Cependant, certaines requêtes peuvent être plus performantes que d'autres. Les performances peuvent dépendre de plusieurs facteurs : la quantité de données, les commandes utilisées dans la requête, la structure de la base de données, le type de données, etc. Il s'agit d'un sujet un peu plus compliqué et avancé que nous n'aborderons pas dans ce tutoriel sur les requêtes SQL. 

Mais si vous êtes intéressé, le cours de DataCamp sur la conception de bases de données approfondit ces sujets.

ORDER BY

Le mot-clé ORDER BY est utilisé pour trier le résultat par ordre croissant (à l'aide du mot-clé ASC) ou décroissant (à l'aide du mot-clé DESC). Le tri est effectué par défaut dans l'ordre croissant.

Q7 : Quels sont les films stockés dans le tableau ? Classez-les par ordre décroissant de l'année de publication.

Syntaxe : SELECT column1, column2, ... FROM nom_table ORDER BY column1, column2, ... ASC|DESC;

Requête SQL: SELECT title, release_year FROM films ORDER BY release_year DESC ;

Résultat

 

title

release_year

1

Inception

2010

2

Le chevalier noir

2008

3

Le Seigneur des Anneaux : Le retour du roi

2003

4

Fight Club

1999

5

Pulp Fiction

1994

6

La rédemption de Shawshank

1994

7

La liste de Schindler

1993

8

La guerre des étoiles : Épisode V - L'Empire contre-attaque

1980

9

Le Parrain : Partie II

1974

10

Le Parrain

1972

LIMITE

Il peut arriver que la base de données prenne beaucoup de temps pour exécuter votre requête, en particulier si la quantité de données stockées dans la base de données est très importante. 

La fonction LIMIT est un moyen simple et rapide de tester une requête ou d'échantillonner le type de résultat que vous obtenez. LIMIT vous permet de limiter le nombre de résultats obtenus.

Q8 : Quels sont les 5 derniers films les plus récents figurant dans le tableau ? 

Indice : Triez l'ensemble des résultats par ordre décroissant en fonction de l'année de publication, puis utilisez la fonction LIMIT.

Syntaxe : SELECT column1, column2, ... FROM table_name LIMIT x ;

Requête SQL: SELECT title, release_year FROM films ORDER BY release_year DESC LIMIT 5 ;

Résultat

 

title

release_year

1

Inception

2010

2

Le chevalier noir

2008

3

Le Seigneur des Anneaux : Le retour du roi

2003

4

Fight Club

1999

5

Pulp Fiction

1994

INSERT INTO

INSERT INTO est utilisé pour ajouter de nouveaux enregistrements dans un tableau de base de données. Vous pouvez écrire une instruction INSERT INTO de deux manières : 

  • Indiquez les noms des deux colonnes ainsi que les valeurs correspondantes.

Syntaxe : INSERT INTO nom_table (colonne1, colonne2, colonne3, ...) VALUES (value1, value2, value3, ...) ;

  • Si vous ajoutez des valeurs pour TOUTES les colonnes du tableau, il n'est pas nécessaire de spécifier les noms des colonnes dans la requête. Soyez prudent lorsque vous utilisez cette méthode, et assurez-vous que l'ordre des valeurs est le même que celui des colonnes du tableau. 

Syntaxe : INSERT INTO table_name VALUES (value1, value2, value3, ...) ;

Q9 : Ajouter une entrée pour "Le Parrain : Part III" dans le tableau avec les détails : ("Le Parrain : Partie III", 1990, 54000000, 136900000, 7.6)

Syntaxe : SELECT column1, column2, ... FROM nom_table ORDER BY column1, column2,... ASC|DESC;

Requête SQL: INSERT INTO films (title, release_year, budget, gross, imdb_score)

VALEURS ("Le Parrain : Part III", 1970, 54000000, 136900000, 7.6) ;

Tableau résultant

 

title

release_year

budget

brut

imdb_score

1

Le Parrain

1972

6000000

134821952

9.2

2

Le chevalier noir

2008

185000000

533316061

9

3

Le Parrain : Partie II

1974

13000000

57300000

9

4

La liste de Schindler

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

Le Seigneur des Anneaux : Le retour du roi

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

La guerre des étoiles : Épisode V - L'Empire contre-attaque

1980

18000000

290158751

8.8

10

La rédemption de Shawshank

1994

25000000

28341469

9.3

11

Le Parrain : Partie III

1970

54000000

136900000

7.6

MISE À JOUR

L'instruction UPDATE permet de modifier les tableaux existants. 

Q10 : Corrigez l'année de sortie de "Le Parrain" : Partie III" : 1990 au lieu de 1970

Syntaxe : UPDATE nom_table SET colonne1 = valeur1, colonne2 = valeur2, ...WHERE condition ;

Requête SQL: UPDATE films SET release_year = 1990 WHERE title = 'Le Parrain' : Partie III" ;

Tableau résultant

 

title

release_year

budget

brut

imdb_score

1

Le Parrain

1972

6000000

134821952

9.2

2

Le chevalier noir

2008

185000000

533316061

9

3

Le Parrain : Partie II

1974

13000000

57300000

9

4

La liste de Schindler

1993

22000000

96067179

8.9

5

Pulp Fiction

1994

8000000

107930000

8.9

6

Le Seigneur des Anneaux : Le retour du roi

2003

94000000

377019252

8.9

7

Fight Club

1999

63000000

37023395

8.8

8

Inception

2010

160000000

292568851

8.8

9

La guerre des étoiles : Épisode V - L'Empire contre-attaque

1980

18000000

290158751

8.8

10

La rédemption de Shawshank

1994

25000000

28341469

9.3

11

Le Parrain : Partie III

1990

54000000

136900000

7.6

DELETE

L'instruction DELETE est utilisée pour supprimer un enregistrement existant dans un tableau. 

Q11 : Supprimer l'entrée "Le Parrain" : Part III" dans le tableau "films".

Syntaxe : DELETE FROM nom_table WHERE condition ;

Requête SQL: DELETE FROM films WHERE title = 'Le Parrain' : Partie III" ;

Tableau résultant: Même chose que pour le tableau original que nous avons commencé avec un total de 10 enregistrements.

Requêtes SQL avancées

Rappelez-vous que nous avons placé le "*" magique pour une discussion ultérieure à la fin de Q1 ? Le * est un astérisque. Il s'agit d'un caractère global que l'on pourrait interpréter comme "tout". 

Le retour de Q1 : Quels sont les films stockés dans le tableau ?

Nous avons utilisé SELECT - FROM avec la syntaxe : SELECT column1, column2, ... FROM table_name ;

Nous avons utilisé la requête : SELECT title FROM films ;

Mais que se passerait-il si vous ne saviez pas que "titre" est un champ du tableau "films" ? Ou le nom d'un champ quelconque du tableau ? Ou bien vous voulez simplement connaître tous les champs du tableau pour vous faire une idée des données ? C'est là que * s'avère utile.

Nous pourrions réécrire la requête comme suit : SELECT * FROM films ; 

Nous obtiendrons ainsi tous les tableaux disponibles dans le tableau.

Caractères de remplacement SQL

LIKE

L'opérateur LIKE est utilisé dans une clause WHERE pour rechercher un motif spécifique dans une colonne. 

Q12 : Récupérer tous les noms de films commençant par "The".

Syntaxe : SELECT column1, column2, ... FROM table_name WHERE column1 LIKE patternToMatch ;

Requête SQL: Select * FROM films WHERE title LIKE 'The%' ;

Tableau résultant:

 

title

release_year

budget

brut

imdb_score

1

Le Parrain

1972

6000000

134821952

9.2

2

Le chevalier noir

2008

185000000

533316061

9

3

Le Parrain : Partie II

1974

13000000

57300000

9

4

Le Seigneur des Anneaux : Le retour du roi

2003

94000000

377019252

8.9

5

La rédemption de Shawshank

1994

25000000

28341469

9.3

Caractère de remplacement

Description

Utilisation : Exemple

(Pourcentage)

Représente zéro ou plusieurs caractères

Le% : Le, Le Parrain, Theodore

(Moins de points)

Représente un seul caractère

T_e : La, cravate

[ ] (Crochets)

Représente n'importe quel caractère à l'intérieur des crochets

C[ao]t : Chat, Cot mais pas Coat

^ (Cale)

Représente tout caractère qui n'est pas entre crochets

Ca[^r] : Cat, Cab, Can mais pas Car

- (Dash)

Représente tout caractère unique dans la plage spécifiée

C[a-o] : Can, Cab mais pas Car, Cat

Ce qui est formidable, c'est que nous pouvons utiliser des caractères génériques dans des combinaisons ! Vous pouvez donc créer des instructions de correspondance assez complexes en utilisant des caractères génériques et LIKE.

Fonctions agrégées

SQL est excellent pour agréger des données comme vous le feriez dans un tableau croisé dynamique dans Excel. Les fonctions d'agrégation peuvent effectuer des calculs non pas entre deux colonnes, mais à l'intérieur d'une colonne, ce qui permet de travailler avec toutes les lignes ou certaines lignes d'une même colonne. 

Il s'agit des fonctions d'agrégation de SQL : 

Fonction

Description

PAYS

Compte le nombre d'enregistrements dans une colonne particulière

SUM

Additionne toutes les valeurs d'une colonne particulière

MIN

Renvoie la valeur la plus basse d'une colonne particulière

MAX

Renvoie les valeurs les plus élevées d'une colonne particulière

AVG

Renvoie la valeur moyenne pour un groupe sélectionné 

Q13 : Quel est le dernier film stocké dans le tableau ?

Requête SQL: SELECT title AS latest_movie, MAX(release_year) AS released_in FROM films ;

Résultat

 

latest_movie

libéré_in

1

Inception

2010

GROUPE PAR

Les fonctions d'agrégation SQL agrègent une colonne entière. Mais que se passe-t-il si vous ne souhaitez agréger qu'une partie d'une colonne ? Par exemple, vous pourriez vouloir compter le nombre de films sortis en une année.

C'est ici que vous aurez besoin d'une clause GROUP BY. GROUP BY vous permet de séparer les données en groupes, qui peuvent ensuite être agrégés indépendamment les uns des autres.

Q13 : Comptez le nombre de films sortis en une année.

Requête SQL: SELECT release_year, COUNT(*) AS number_of_movies FROM films GROUP BY release_year ;

Résultat

 

release_year

number_of_movies

1

1972

1

2

2008

1

3

1974

1

4

1993

1

5

1994

2

6

2003

1

7

1999

1

8

2010

1

9

1980

1

Exemples de requêtes SQL à partir de plusieurs tableaux

Jusqu'à présent, nous avons travaillé avec un seul tableau à la fois. Mais la véritable puissance des bases de données et du langage SQL réside dans la possibilité de travailler avec des données provenant de plusieurs tableaux. 

Le terme "base de données relationnelle" dans les SGBDR vient du fait que les tableaux de la base de données sont liés les uns aux autres. Ils possèdent des identifiants communs qui permettent de combiner facilement des données provenant de plusieurs tableaux. C'est ici que nous utilisons les JOINTS de tableaux SQL.

Prenons un exemple simple pour nous familiariser avec la syntaxe des JOIN et en apprendre un peu plus sur les différents types de JOIN possibles.

Considérons un autre tableau appelé "movieDirectors" qui contient le nom du réalisateur de certains des films figurant dans le tableau "films". 

 

title

directeur

1

Le Parrain

Francis Ford Coppola

2

Le Parrain : Partie II

Francis Ford Coppola

3

Le Parrain : Partie III

Francis Ford Coppola

4

La liste de Schindler

Steven Spielberg

5

The Dark Knight Rises (Le Chevalier Noir)

Christopher Nolan

Nous pourrions combiner les données de ces deux tableaux en utilisant un identifiant commun : "titre".

Q14 : Ajoutez une colonne au tableau "Films", en y insérant le nom du réalisateur figurant dans le tableau "Réalisateurs de films".

Syntaxe : SELECT leftTable.column1, rightTable.column1, leftTable.column2.... FROM leftTable INNER JOIN rightTable ON leftTable.commonIdentifier = rightTable.commonIdentifier ;

Requête SQL: Select films.title, films.release_year, movieDirectors.director FROM films INNER JOIN movieDirectors ON films.title = movieDirectors.title

Résultat

 

title

release_year

directeur

1

Le Parrain

1972

Francis Ford Coppola

2

Le Parrain : Partie II

1974

Francis Ford Coppola

3

La liste de Schindler

1993

Steven Spielberg

Différents types de jointures SQL

JOIN

Description

Schéma

Jointure interne

Renvoie uniquement les enregistrements dont les valeurs correspondent dans les deux tableaux.

Jointure interne

Jointure gauche (externe)

Renvoie tous les tableaux du tableau de gauche et les enregistrements correspondants du tableau de droite.

Jointure gauche (externe)

Jointure droite (externe)

Renvoie tous les enregistrements du tableau de droite et les enregistrements correspondants du tableau de gauche.

Jointure droite (externe)

Jointure complète (externe)

Renvoie tous les tableaux lorsqu'il y a une correspondance dans le tableau de gauche ou de droite.

Jointure complète (externe)

Dans l'exemple de requête ci-dessus, "films" est le tableau de gauche et "movieDirectors" est le tableau de droite. Par conséquent, avec le INNER JOIN que nous avons effectué, nous n'avons récupéré que les films qui existaient dans les deux tableaux. L'ensemble des résultats est une intersection des deux tableaux.

SQL UNION

Les JOINTS SQL vous permettent de combiner deux ensembles de données côte à côte. Mais avec SQL UNION, vous pouvez empiler un ensemble de données sur un autre. L'opérateur UNION est utilisé pour combiner l'ensemble des résultats de deux ou plusieurs instructions SELECT lorsque les "règles" suivantes sont respectées : 

  1. Chaque instruction SELECT doit comporter le même nombre de colonnes.
  2. Les colonnes doivent également avoir des types de données similaires.
  3. Les colonnes utilisées dans les instructions SELECT doivent être dans le même ordre.

Syntaxe : SELECT nom_de_colonne(s) FROM table1 UNION ALL SELECT nom_de_colonne(s) FROM table2 ;

Prenons le tableau "films_2000s" :

 

title

release_year

budget

brut

imdb_score

1

Inception

2010

160000000

292568851

8.8

2

Le procès des 7 de Chicago 

2020

35000000

 

7.7

Si nous combinons les deux tableaux...

Requête SQL: SELECT title FROM films UNION SELECT title FROM movies_2000s ;

Résultat

 

title

1

Le Parrain

2

Le chevalier noir

3

Le Parrain : Partie II

4

La liste de Schindler

5

Pulp Fiction

6

Le Seigneur des Anneaux : Le retour du roi

7

Fight Club

8

Inception

9

La guerre des étoiles : Épisode V - L'Empire contre-attaque

10

La rédemption de Shawshank

12

Le procès des 7 de Chicago 

Vous avez peut-être remarqué que "Inception" n'apparaît qu'une seule fois dans l'ensemble des résultats. En effet, UNION ne sélectionne que des valeurs distinctes ; si vous voulez toutes les valeurs, vous pouvez utiliser UNION ALL.

Requêtes SQL imbriquées

SQL est capable de faire des merveilles avec les données. Les requêtes imbriquées sont un autre outil de SQL qui en fait un langage qu'il vaut la peine de connaître. Une requête imbriquée n'est rien d'autre qu'une requête à l'intérieur d'une autre requête (un peu comme les rêves dans Inception !).

Avec les requêtes imbriquées, vous pouvez effectuer des opérations très compliquées, mais en plusieurs étapes, tout en préservant la lisibilité et la compréhensibilité du code.

Q15 : Déterminez la rentabilité moyenne des films figurant dans le tableau "films".

Indice : Vous avez calculé la rentabilité plus tôt, avec Q3. Vous devez maintenant prendre le résultat de cette requête et lui appliquer la fonction AVG.

Requête imbriquée SQL

SELECT AVG(*) AS average_profit FROM 

(SELECT title, (gross - budget) AS movie_profit FROM films where gross > budget) ;

Nous avons supprimé la valeur négative de "Fight Club" dans le calcul de la requête SQL interne en ajoutant brut > budget. 

Dans la requête imbriquée ci-dessus, la requête interne est d'abord exécutée, puis l'ensemble des résultats est utilisé comme tableau temporaire à partir duquel la requête externe peut interroger et obtenir des données. 

Nous ne nous attarderons pas trop sur le sujet des requêtes SQL imbriquées. Mais nous vous recommandons vivement de suivre le cours SQL intermédiaire de DataCamp pour maîtriser les requêtes SQL. Vous jouerez avec la base de données du football européen tout en apprenant davantage sur les requêtes imbriquées. Vous découvrirez également les instructions CASE et les fonctions de fenêtre - des sujets que nous n'avons pas pu aborder dans ce tutoriel sur les requêtes SQL. 

Dernières réflexions

Vous avez beaucoup appris sur les requêtes SQL et vous êtes bien placé pour commencer à résoudre des problèmes concrets à l'aide de SQL. Dans ce tutoriel sur les requêtes SQL, vous avez appris ce qu'est une requête SQL et comment écrire des requêtes SQL. 

Vous avez vu la syntaxe de la requête et répondu à quelques questions en cours de route. Nous avons commencé par des exemples de requêtes SQL simples utilisant les instructions SELECT - FROM - WHERE et nous sommes passés à des requêtes SQL légèrement plus complexes utilisant les jointures, l'union et les requêtes imbriquées. 

Nous avons couvert beaucoup de choses dans le tutoriel, mais il ne s'agit PAS d'une liste exhaustive de toutes les requêtes SQL simples et avancées possibles - il y en a d'autres. Et nous vous recommandons vivement de suivre le cursus SQL Fundamentals de DataCamp pour acquérir une compréhension plus approfondie et plus complète de SQL. 

Rappelez-vous que la pratique est la clé de la maîtrise de toute compétence et que le langage SQL ne fait pas exception à la règle ! Practise vous permettra d'acquérir des compétences SQL de niveau débutant à avancé.

Alors, lancez-vous et bonne recherche !

Devenez ingénieur en données

Faites la preuve de vos compétences en tant qu'ingénieur en données prêt à l'emploi.
Accélérer Ma Carrière Dans Les Données
Sujets

Cours pour SQL

Certification disponible

cours

Jointure de données en SQL

4 hr
177.5K
Améliorez vos connaissances en SQL et apprenez à joindre des tableaux, à appliquer la théorie des ensembles relationnels et à travailler avec des sous-requêtes.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow