Si vous êtes fidèle à notre blog, vous avez déjà entendu parler de SQL ou “Structured Query Language”: langage de programmation pour gérer des bases de données et vous êtes au courant de l’importance des jointures SQL.
Si vous avez manqué l’article pour connaître les bases du langage SQL. On vous le redonnes ici.
A première vue, les jointures en SQL peuvent paraître compliquées ou difficiles à appliquer. DataScientest vous propose un petit récap des principales jointures en SQL avec un exemple tout simple pour vous faciliter la vie !
Mais avant tout, une jointure, qu’est-ce que c’est ?
Les jointures permettent de récupérer des données dans une base de données où les tables ont des relations entre elles.
Elles permettent d’exploiter les tables d’une base de données, de les lier et d’obtenir des résultats efficaces.
Il en existe plusieurs types, nous allons aborder les principales.
Tout au long de cet article on va s’appuyer sur deux tables :
- la table ville montre les villes où vit le client correspondant à l’id_client,
- la table email donne les coordonnées mails des clients.
Ville
1. INNER JOIN
La jointure interne ou INNER JOIN permet de retourner les données quand la condition est vraie dans les deux tables.
Comme le montre le schéma, ce type de jointure va permettre de concaténer les tuples des 2 tables deux à deux si une condition est satisfaite. Cette condition peut être de tout type tant qu’elle retourne un booléen. Typiquement, cette condition sera l’égalité d’un attribut en commun. Il est nécessaire de spécifier les attributs à utiliser pour effectuer la jointure. On utilise le mot clé ON suivi de l’égalité souhaitée après avoir renseigné les tables dans l’INNER JOIN.
C’est la requête qui fait perdre le plus d’informations puisqu’elle ne sélectionne que les lignes des deux tables où il y a des informations dans les deux tables.
Ici en faisant une INNER JOIN entre les deux tables on obtient seulement les id_client qui sont présents dans la table email et dans la table ville. Les id_client 4 et 5 qui sont présents dans la table email et non dans la table ville ne sont pas pris en compte. De même pour les id_client 7 et 8 qui sont dans la table ville et non dans la table email.
2. LEFT JOIN
La jointure à gauche ou LEFT JOIN est une jointure entre 2 tables qui permet de retourner tous les enregistrements de la table de gauche même s’il n’y a pas de correspondance avec la table de droite. S’il n’y a pas de correspondance, les valeurs manquantes sont définies à NULL. Comme pour le INNER JOIN, Il est nécessaire de spécifier les attributs à utiliser pour effectuer la jointure : On utilise le mot clé ON suivi de l’égalité souhaitée après avoir renseigné les tables dans le LEFT JOIN.
Ici on fait une requête LEFT JOIN par rapport à la table email donc on affiche toutes les lignes lorsque l’id_client est présent dans la table gauche donc dans la table email.
Ainsi les lignes correspondantes à l’id_client 7 et 8 ne sont pas présentes dans la sortie de la requête.
3. RIGHT JOIN
La jointure à droite ou RIGHT JOIN est une jointure entre 2 tables qui permet de retourner tous les enregistrements de la table de droite même s’il n’y a pas de correspondance avec la table de gauche. S’il n’y a pas de correspondance, les valeurs manquantes sont définies à NULL.
Comme pour le INNER JOIN, ou le LEFT JOIN Il est nécessaire de spécifier les attributs à utiliser pour effectuer la jointure : on utilise le mot clé ON suivi de l’égalité souhaitée après avoir renseigné les tables dans le RIGHT JOIN
Ici on fait un RIGHT JOIN par rapport à la table ville, donc on obtient comme résultat toutes les lignes de la table ville avec les lignes correspondantes de la table email lorsqu’il y a correspondance, c’est pourquoi les lignes correspondant à l’id_client 4 et 5 ne sont pas présentes.
4. FULL JOIN
La jointure FULL JOIN est une jointure entre 2 tables qui permet de retourner tous les enregistrements des deux tables même s’il n’y a pas de correspondance avec l’autre. S’il n’y a pas de correspondance, les valeurs manquantes sont définies à NULL. Cette jointure nécessite également l’attribut ON.
Ici peu importe s’il n’y a pas de lignes correspondantes dans l’une des deux tables, toutes les informations des deux tables sont présentes. C’est la jointure qui permet de garder le plus d’informations possibles.
5. NATURAL JOIN
La jointure NATURAL JOIN est une jointure entre 2 tables qui permet de retourner les enregistrements des deux tables de façon « naturelle ». Il faut qu’il y ait au moins une colonne avec le même nom dans les deux tables. Elle permet de faire une jointure naturelle en retournant les lignes où il y a des paires qui correspondent aux deux tables.
Avec NATURAL JOIN on ne spécifie pas le ON.
On voit à la sortie qu’il y a bien eu une jointure entre les deux tables avec « id_client » car c’est la seule variable présente dans les deux tables.
Mais quelle est la différence entre la NATURAL JOIN et la INNER JOIN ?
La INNER JOIN permet d’éviter la répétition de lignes égales, ce que ne permet pas la NATURAL JOIN. La jointure interne renvoie une table en fonction des données spécifiées dans le ON alors que la jointure naturelle renvoie une table en fonction d’une colonne avec le même nom et le même type dans les deux tables.
Les quatre types de jointures SQL à retenir sont :
- INNER JOIN qui permet de récupérer les informations entre deux tables lorsque la condition sur le ON est respectée sur les deux tables,
- LEFT / RIGHT JOIN qui permet de récupérer les informations entre deux tables en gardant toutes les informations de l’une des deux tables,
- FULL JOIN récupère toutes les informations des deux tables sans perte d’information (mais elle peut afficher beaucoup de NULL),
- NATURAL JOIN effectue une jointure naturelle entre les deux tables, on n’a pas besoin de spécifier le ON.
Les jointures permettent d’associer plusieurs tables de manière efficace. Il en existe plusieurs types et nous en avons vu les principales. Si vous souhaitez connaître les 5 méthodes les plus utiles en SQL, découvrez cet article .
Si vous souhaitez en savoir plus concernant les requêtes SQL un module y est consacré dans notre formation de Data Analyst.