Webinar de présentation de nos formations Data le 29 mars à 17h30 !
J-9 / Je m'inscris à l'événement ➜Je m'inscris à l'événementSi tu commences à manipuler des bases de données relationnelles, tu dois apprendre à maîtriser l’art des jointures SQL. Joindre deux tables revient à créer une nouvelle table temporaire qui fusionne les données de deux datasets. Il existe de nombreuses manières de fusionner les enregistrements présents sur deux tables. Trouver la bonne manière et la réaliser sans se tromper est parfois difficile ! Mais pas de panique, cet article te présente les jointures SQL à connaître.
Les jointures SQL sont très utilisées par un Data analyst, que ce soit sur des plateformes propriétaires comme Oracle, IBM ou encore MySQL.
Le SQL est langage qui permet de manipuler des bases de données (database) mettant en relation une série de tables. Chaque table prend la forme d’un tableau, composé de lignes et de colonnes dans lesquelles sont classées les données (comme un tableau Excel).
Ces tables sont ensuite mises en relation à l’aide d’une clé primaire et d’une clé étrangère. Pour associer les données des différentes tables mises en relation, on doit utiliser une jointure.
Prenons un exemple que nous allons utiliser tout au long de cet article. Nous allons effectuer des jointures sur une base de données composées de deux tables :
Si tu souhaites associer les données de ces deux tables afin d’effectuer une analyse, alors tu dois faire une jointure SQL !
Une jointure est une requête qui sert à fusionner toute ou partie de deux tables d’une base de données relationnelles afin d’obtenir un nouveau dataset facile à exploiter.
Par exemple, si tu veux associer les acteurs et leur film, tu dois faire une jointure SQL. Dans ce cas, il s’agit d’identifier uniquement les correspondances entre un acteur et un film. On va donc réaliser une jointure de type INNER JOIN pour associer les données de deux tables que lorsque l’ID_film est identique.
Cette nouvelle table est donc née de la jointure des deux tables précédentes. Elle permet d’identifier facilement que deux acteurs ont joué dans le même film. En effet, "Don’t look up" est répété deux fois car son ID se trouve dans deux lignes différentes de la table Acteurs.
Ainsi, une jointure SQL facilite l’analyse en fusionnant les données de plusieurs tables. Il existe différents types de jointures SQL adaptées à la question qu’on se pose. Savoir les utiliser est essentiel si tu souhaites te spécialiser dans l’analyse de données.
Avec Databird, tu peux acquérir les compétences d’un Data analyst en quelques semaines. Nos formations sont adaptées à tous les emplois du temps !
Il existe plusieurs instructions de jointures différentes. Chaque jointure a des caractéristiques particulières qu’il faut connaître avant de s’en servir. Bien choisir sa jointure peut te faire gagner du temps et t’éviter des problèmes !
Le INNER JOIN est une jointure qui permet d’associer les données de deux tables seulement s’il existe une correspondance. Ainsi, la nouvelle table associe les enregistrements (=lignes) que si la clé est identique. En mathématiques on appelle ça une intersection.
Dans cet article :
Nous allons maintenant voir comment construire la requête SQL INNER JOIN.
La requête se décompose en 3 parties :
Voici la requête SQL qui a permis d’obtenir le tableau présenté précédemment :
Tu remarques qu’il manque l’ID_film 4 de la table Cinema, correspondant au film Titanic. En effet, il n’existe pas de correspondance entre à l’ID_film 4 dans la table Acteurs. La nouvelle table ne contient pas l’acteur Tom Hanks car il n’est associé à aucun film.
C’est logique : INNER JOIN ne garde que les lignes qui font l’objet d’une intersection.
Cette instruction réalise une jointure entre deux tables en gardant toutes les informations de la table de gauche. Les données de la table de droite sont associées à la table de gauche seulement si leur clé correspond.
Remarque : Quand on dit “à gauche” et “à droite”, on fait référence à l’ordre d’apparition des tables après la clause ON : table_gauche.attribut = table_droite.attribut.
LEFT JOIN appartient à la famille des jointures OUTER JOIN. Si un enregistrement ne se situe pas dans la table de droite mais qu’il existe la table de gauche, alors on trouve la valeur NULL dans le dataset final.
Contrairement à un INNER JOIN, un LEFT JOIN préserve les données de la table de gauche, même en l’absence de correspondance.
La requête LEFT JOIN se construit ainsi :
Nous allons garder les mêmes tables qu’au début de l’article. Nous allons appliquer la requête SQL LEFT JOIN sur ces deux tables.
Remarque : l’étoile derrière la clause SELECT signifie “tout sélectionner”.
Ici, tous les enregistrements de la table Cinema sont présents. Cependant, comme aucun acteur est associé à l’ID_film 4 (Titanic), on trouve des valeurs NULL.
Tu remarques également que Tom Hanks ne figure pas dans cette nouvelle table. C’est normal car la table de référence est la table de gauche, c’est à dire la table Cinema.
Cette jointure est un LEFT JOIN auquel on retire les enregistrements qui correspondent à la table de droite. Ainsi, on ne garde que les données de la table de gauche qui n’ont aucune correspondance avec la table de droite.
Cette requête SQL réalise une jointure en gardant toutes les informations de la table de droite. S’il n’y a pas de correspondance avec la table de gauche, la cellule de l’information manquante contient la valeur NULL. Il s’agit d’un OUTER JOIN aussi.
La requête SQL RIGHT JOIN se décompose de la manière suivante :
Faisons un RIGHT JOIN des tables Cinema et Acteurs :
Ici, comme la table Cinéma ne contient aucun film de Tom Hanks, la ligne contient des valeurs NULL.
Cette jointure est juste le RIGHT JOIN auquel on retire les enregistrements de la table de Gauche. Ainsi, on ne garde que les lignes de la table de droite qui n’ont aucune correspondance avec la table de gauche.
Le FULL JOIN va réaliser une jointure totale entre deux tables. On va prendre les enregistrements de toutes les tables et les mettre dans la table de résultat. Les cellules qui n’auront pas de correspondance dans les deux tables en auront pour valeur : NULL.
Cette jointure n'exclut aucune donnée, ni à droite ni à gauche. Elle appartient également à la famille des OUTER JOIN.
La requête se construit de la manière suivante :
Pour réaliser une jointure FULL JOIN de nos deux tables, la requêt SQL sera :
Voici le résultat :
Ici, la table contient tous les enregistrements des deux tables, qu’il y ait une correspondance ou non.
Bravo ! Tu connais les principales jointures SQL ! Pour apprendre à les maîtriser, télécharge le programme de nos formations et inscris toi à notre prochaine session !
NATURAL JOIN permet de joindre deux tables à condition qu’il existe deux colonnes qui portent le même nom et qui contiennent des données du même type.
La jointure NATURAL JOIN a la particularité de ne pas utiliser la clause ON dans sa requête SQL. Cette jointure cherche automatiquement une clé entre les colonnes des deux tables. Si elle la trouve, elle associe les données sur la base de cette clé, sinon un NULL apparaît.
La requête se construit de la manière suivante :
Appliquons maintenant cette jointure à notre exemple :
On obtient le résultat suivant :
Ici, on trouve le même résultat que la jointure INNER JOIN. Pourtant, la jointure NATURAL JOIN n’a pas eu besoin de clause ON. Elle a déduit que la colonne ID_film était la clé de jointure car le nom et le type de donnée de cette colonne sont les mêmes dans les deux tables.
CROSS JOIN est une jointure assez particulière. Elle réalise un produit cartésien entre les données de deux tables.
Késako ? C’est facile : si la table A possède 10 lignes et que la table B possède 10 lignes alors la table issue de la jointure aura 100 lignes.
Ainsi, chaque ligne de la table A est associée à toutes les lignes de la table B.
Ici, on n’utilise pas de clé de jointure. Toutes les lignes sont associées avec celles de l’autre table.
Voici de quoi se compose la commande SQL :
Appliquons maintenant cette jointure avec notre exemple de cinéma :
On obtient le résultat suivant :
Tu peux remarquer que chaque ligne de la table Cinema a été associée à chaque ligne de la table Acteurs. C’est parce que la table de gauche (Cinema) correspond à la table A sur le schéma ci-dessus.
Remarque : l’intégralité de la table n’est pas présente, elle contient 30 lignes. C’est logique car 5*6 = 30.
Le UNION JOIN réalise le même travail que la jointure FULLJOIN mais il s’utilise avec des tables qui ont les mêmes colonnes. Pour mieux comprendre nous allons introduire une nouvelle table « acteurs FR » qui réunit des acteurs français.
La jointure SQL UNION permet de créer une table unique qui réunit toutes les données des deux tables mais à la différence d’un FULL JOIN, la table finale n’a pas de doublons.
Appliquons maintenant cette jointure avec notre exemple de cinéma :
On obtient le résultat suivant :
La table qui résulte de cette jointure contient tous les enregistrements des deux tables. L’opération est la même que pour le FULL JOIN mais le résultat ne contient pas de NULL ni de doublons. Pour les tables où les colonnes portent les mêmes noms, on préférera l’UNION.
Le SELF JOIN est une jointure qui est faite sur elle-même. Cela revient à réaliser une jointure sur deux tables identiques.
Ces jointures sont utilisées lorsqu’une table possède une clé primaire et une clé étrangère à la fois. Nous allons prendre une nouvelle table pour expliquer cette jointure.
Voici la table « Employees » :
Cette table donne la liste des employés. Sa clé primaire correspond à l’ID_employee.
La colonne ID_manager indique qui est le manager de l’employé en question.
Concrètement, Antoine est le manager de Yves et Yves est le manager de Marc.
Autrement dit, ID_employee est la clé primaire et ID_manager est la clé étrangère. La jointure SELF JOIN va permettre de mettre en évidence le manager de chaque employé.
Ici, la requête est plus compliquée car il faut dupliquer la table avant de pouvoir réaliser la jointure SELF JOIN :
Voici la requête appliquée à notre exemple :
Remarque : « as » sert à renommer la table et les colonnes pour ne pas se perdre dans la nouvelle table.
Ici, nous avons réalisé une jointure SELF JOIN par le biais d’une jointure LEFT JOIN. Il est tout à fait possible de réaliser la même opération avec d’autres types de jointures.
Le résultat de la requête SQL est le suivant :
Voilà ! Tu connais maintenant les jointures SQL incontournables ! Si toi aussi tu veux devenir un maître de la Data analyse alors fonce t’inscrire à notre formation et rejoins la grande famille des Databirdies !
Notre formation intensive en présentiel ou en distanciel en data analyse est ouverte à tous types de profils. Tu es intéressé pour rejoindre notre communauté ? Postule pour en savoir plus.