« Jointure (informatique) » : différence entre les versions

Un article de Wikipédia, l'encyclopédie libre.
Contenu supprimé Contenu ajouté
PabloX3 (discuter | contributions)
Ajout de plusieurs paragraphes pour améliorer l'ébauche existante sur les jointures SQL.
Balises : Révoqué Éditeur visuel
PabloX3 (discuter | contributions)
m Ajout de sources
Balises : Révoqué Éditeur visuel
Ligne 74 : Ligne 74 :
== Liens externes ==
== Liens externes ==


* https://epershand.net/comprendre-jointures-inner-left-right-join-mysql/
* [https://epershand.net/comprendre-jointures-inner-left-right-join-mysql/ Comprendre les jointures avec MySQL - Epershand]
{{Palette|Base de données}}
{{Palette|Base de données}}
{{Portail|bases de données|Données}}
{{Portail|bases de données|Données}}

Version du 18 mai 2024 à 23:08

En informatique et plus particulièrement dans les bases de données relationnelles, la jointure ou appariement est l'opération permettant d’associer plusieurs tables ou vues de la base par le biais d’un lien logique de données entre les différentes tables ou vues, le lien étant vérifié par le biais d'un prédicat. Le résultat de l'opération est une nouvelle table.

Qu’est-ce qu’une jointure ?

La jointure est une opération essentielle en SQL, permettant de combiner les enregistrements de deux ou plusieurs tables basées sur des colonnes communes. Plus précisément, une jointure est l'union de « n » tables contenant des valeurs identiques dans « m » de leurs colonnes. Les jointures sont utilisées pour retrouver des données dispersées sur plusieurs tables en une seule requête.

Le but de la jointure dans une base de données

Pour simplifier au maximum, une base de données peut être comparée à un fichier Excel, mais avec une puissance bien supérieure (d'où l'utilisation fréquente d'exemples basés sur des tableaux Excel). Chaque donnée est stockée dans une colonne d'une "table". La puissance d'une base de données et du langage SQL réside dans la capacité à filtrer les données et à leur donner une cohérence, notamment grâce aux jointures.

Jointures en SQL

En SQL, une jointure est définie dans la clause FROM, en indiquant le mot clef JOIN pour chaque nouvelle table à joindre à l'une des précédentes et en spécifiant comment, dans un prédicat de jointure introduit par le mot clef ON.

Une ancienne syntaxe, remplacée par le JOIN en 1992, consistait à énumérer les tables dans la clause FROM effectuant ainsi un produit cartésien que l'on filtrait par restriction dans la clause WHERE. Cette ancienne syntaxe est aujourd'hui abandonnée du fait de son incapacité à réaliser pleinement les jointures externes.

La syntaxe de la jointure est la suivante :

<table0> { [ INNER ] | {LEFT | RIGHT | FULL [ OUTER ] } } JOIN <tableN> ON <prédicat>
Signification des différentes jointures en SQL.

Une extension de l'opération de jointure a consisté à rajouter le concept de jointure dite "naturelle" opérant automatiquement sur des colonnes de même nom dans chaque table en jeu.

Syntaxe :

<table0> NATURAL ...  JOIN <tableN> [ USING <liste colonne> ].

Cette syntaxe est à éviter car elle peut entraîner de multiples erreurs ou problèmes de performances (jointures circulaires involontaires, jointures non voulues en cas d'évolution du modèle, etc.)[1].

Les jointures peuvent être classées en équijointures (jointures basées exclusivement sur des égalités entre les colonnes des différentes tables) et théta jointure, c'est-à-dire par inégalité, différences... La plupart du temps les équijointures sont le résultat de la décomposition des relations inhérentes à la modélisation relationnelle des données (sauf forme normale domaine clef).

En algèbre relationnelle, une jointure est une composition de relations, tout comme on peut composer des fonctions (par exemple g o f). En effet, les tables définissent des relations entre les différents champs qui les composent.

La jointure simple

La jointure simple repose sur l’utilisation de l’opérateur égal (=) pour associer les enregistrements des deux tables. Ce type de jointure retourne uniquement les enregistrements pour lesquels il y a des correspondances dans les deux tables. Les lignes qui ne trouvent pas de correspondance dans l’une des tables sont exclues du résultat final.

Les jointures complexes

Dans le monde des bases de données relationnelles, les jointures complexes jouent un rôle crucial pour interroger des données réparties sur plusieurs tables. Contrairement aux jointures simples, qui sont définies dans la clause WHERE, les jointures complexes utilisent des mots clés spécifiques : INNER JOIN, LEFT JOIN et RIGHT JOIN. Ces jointures permettent de combiner des données de manière plus sophistiquée et flexible, offrant ainsi des résultats plus riches et pertinents.

L'INNER JOIN

L'INNER JOIN est le premier type de jointure complexe en SQL. Malgré sa complexité apparente, il fonctionne exactement de la même manière qu'une jointure simple. Le principal avantage de l'INNER JOIN réside dans la clarté et la lisibilité qu'il apporte à vos requêtes SQL. En utilisant explicitement le mot clé INNER JOIN, vous pouvez facilement distinguer les jointures internes (INNER JOIN) des jointures externes (LEFT JOIN, RIGHT JOIN).

L'INNER JOIN retourne uniquement les lignes pour lesquelles il existe des valeurs correspondantes dans les deux tables jointes. Cela signifie que si une ligne d'une table ne trouve pas de correspondance dans l'autre table, elle ne sera pas incluse dans le résultat final.

LEFT (OUTER) JOIN

Le LEFT JOIN, ou LEFT OUTER JOIN, est le deuxième type de jointure complexe en SQL et probablement le plus intéressant en termes de flexibilité. Contrairement à l'INNER JOIN, qui ne retourne que les lignes avec des valeurs correspondantes dans les deux tables, le LEFT JOIN permet d'inclure toutes les lignes de la table de gauche, même si elles n'ont pas de correspondance dans la table de droite. Cela signifie que le LEFT JOIN « donne du mou » à votre requête SELECT, en levant partiellement la contrainte d'appartenance entre les ensembles de données.

Le LEFT JOIN retourne toutes les lignes de la table de gauche (table A) et les lignes correspondantes de la table de droite (table B). Si une ligne de la table de gauche n'a pas de correspondance dans la table de droite, le résultat inclura la ligne de la table de gauche avec des valeurs NULL pour les colonnes de la table de droite.

RIGHT (OUTER) JOIN

Le RIGHT JOIN, ou RIGHT OUTER JOIN, est le troisième type de jointure complexe en SQL. Comme son nom l’indique, c'est une jointure externe, ce qui signifie qu’elle inclut toutes les lignes de la table spécifiée à droite de la clause JOIN, même si elles n’ont pas de correspondance dans la table de gauche. En inversant la contrainte d’existence des données par rapport au LEFT JOIN, le RIGHT JOIN offre une flexibilité supplémentaire pour interroger les données.

Le RIGHT JOIN retourne toutes les lignes de la table de droite (table B) et les lignes correspondantes de la table de gauche (table A). Si une ligne de la table de droite n’a pas de correspondance dans la table de gauche, le résultat inclura cette ligne avec des valeurs NULL pour les colonnes de la table de gauche.

FULL (OUTER) JOIN

Le FULL JOIN, ou FULL OUTER JOIN, est un type de jointure en SQL qui permet de récupérer toutes les lignes des deux tables impliquées dans la jointure, même si certaines lignes n'ont pas de correspondance dans l'autre table. Malheureusement, MySQL ne supporte pas nativement le FULL JOIN. Cependant, avec un peu de ruse et en utilisant la clause UNION, nous pouvons contourner cette limitation et obtenir des résultats similaires.

Le FULL JOIN combine les résultats des LEFT JOIN et RIGHT JOIN. Il inclut toutes les lignes de la table de gauche et toutes les lignes de la table de droite, remplissant les valeurs manquantes avec NULL lorsque les lignes n'ont pas de correspondance.

Notes et références

Articles connexes

Sur les autres projets Wikimedia :

Liens externes