PostgreSQL Types de jointures : interne, externe, gauche, droite

⚡ Résumé intelligent

PostgreSQL Les jointures permettent de récupérer et de combiner des lignes provenant de deux tables ou plus à l'aide d'une clé partagée, et comprennent des jointures internes telles que theta, EQUI et natural, ainsi que des jointures externes couvrant les résultats gauche, droit et complets.

  • 🔗 Combiner: Les jointures fusionnent les colonnes de plusieurs tables en fonction d'une clé commune.
  • (I.e. Jointure interne: Les jointures internes ne renvoient que les lignes pour lesquelles la condition de jointure est satisfaite.
  • ⬅️ Joint gauche: LEFT OUTER JOIN conserve chaque ligne de la table de gauche, en ajoutant des NULL pour les lignes de droite non appariées.
  • ➡️ Jointure droite: RIGHT OUTER JOIN conserve chaque ligne de la table de droite, en ajoutant des valeurs NULL pour les lignes de gauche non appariées.
  • ???? Adhésion complète : FULL OUTER JOIN renvoie toutes les lignes des deux tables avec des valeurs NULL lorsqu'aucune correspondance n'existe.
  • 🤖 Aide IA : Les assistants IA sélectionnent le type de jointure approprié et rédigent la condition ON.

PostgreSQL Types de jointure

Que sont les jointures PostgreSQL?

PostgreSQL Joint Les jointures permettent d'extraire des données de plusieurs tables. Elles permettent de combiner les instructions SELECT et JOIN en une seule. Une condition JOIN est ajoutée à l'instruction, et toutes les lignes qui la satisfont sont renvoyées. Les valeurs des différentes tables sont combinées en fonction de colonnes communes. Cette colonne commune est généralement une clé primaire de la première table et une clé étrangère de la seconde.

PostgreSQL Types de jointure

Il existe deux types de jointures dans PostgreSQL:

  • Jointures intérieures
  • Jointures externes

PostgreSQL Jointure interne

Il existe 3 types de jointures internes dans PostgreSQL:

  • Rejoindre Theta
  • Jointure naturelle
  • Rejoindre EQUI

Rejoindre Thêta

Une jointure thêta permet de joindre deux tables en fonction de la condition représentée par thêta. Les jointures thêta peuvent fonctionner avec tous les opérateurs de comparaison. Dans la plupart des cas, la jointure thêta est appelée jointure interne.

La jointure thêta est le type de JOIN le plus basique. Il renverra toutes les lignes des tables où la condition JOIN est satisfaite.

syntaxe:

SELECT columns
FROM table-1
INNER JOIN table-2
ON table-1.column = table-2.column;

Considérez les tables suivantes de la base de données Demo :

Livre:

PostgreSQL Rejoindre Thêta

Le prix :

PostgreSQL Rejoindre Thêta

Nous voulons voir le nom de chaque livre et le prix correspondant. Nous pouvons exécuter la commande suivante :

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Cela renverra ce qui suit :

PostgreSQL Rejoindre Thêta

Seules 3 lignes satisfaisaient à la condition de jointure.

Rejoindre ÉQUI

La jointure EQUI nous offre un moyen de joindre deux tables basées sur la relation clé primaire/clé étrangère. Par exemple:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Cela renverra ce qui suit :

PostgreSQL Rejoindre ÉQUI

Les enregistrements ont été renvoyés par les deux tables en fonction des colonnes communes, c'est-à-dire la colonne id.

Jointure naturelle

Ce type de jointure nous offre une autre façon d’écrire une jointure EQUI. Nous pouvons améliorer notre exemple précédent en ajoutant le mot-clé NATURAL comme indiqué ci-dessous :

SELECT *
FROM Book
NATURAL JOIN Price;

Cela renverra ce qui suit :

PostgreSQL Jointure naturelle

Une seule colonne id a été renvoyée. Le NATURAL JOIN a pu constater que la colonne id est commune dans les deux tables. Un seul a été restitué.

PostgreSQL Jointure externe

Il existe 3 types de jointures externes dans PostgreSQL:

  • Jointure externe gauche
  • Jointure externe droite
  • Jointure externe complète

PostgreSQL Jointure externe gauche

Le LEFT OUTER JOIN renverra toutes les lignes du tableau de gauche et uniquement les lignes du tableau de droite où la condition de jointure a été satisfaite.

syntaxe:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON table-1.column = table-2.column;

Il faut voir le nom de chaque livre et le prix correspondant. Nous pouvons exécuter la commande suivante :

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Cela renvoie les éléments suivants :

PostgreSQL Jointure externe gauche

Les 4 lignes de la table Book ont ​​été renvoyées. Seules 3 lignes de la table Price remplissaient la condition de jointure. C'est pourquoi ils ont été restitués. Le dernier livre n'a pas de valeur de prix correspondante.

PostgreSQL Jointure externe droite

Le RIGHT OUTER JOIN renvoie toutes les lignes du tableau de droite et les lignes du tableau de gauche où la condition de jointure a été satisfaite.

syntaxe:

SELECT columns
FROM table-1
RIGHT OUTER JOIN table-2
ON table-1.column = table-2.column;

Par exemple :

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Cela renvoie les éléments suivants :

PostgreSQL Jointure externe droite

Toutes les lignes de la table Price ont été retournées. Seules les lignes de la table Book correspondant à la condition de jointure ont été retournées. La troisième ligne ne contient aucune valeur pour le champ name, car aucune correspondance n'a été trouvée.

Participation extérieure complète PostgreSQL

Ce type de JOIN renverra toutes les lignes du tableau de gauche et toutes les lignes du tableau de droite avec des valeurs nulles lorsque la condition de jointure n'est pas satisfaite.

syntaxe:

SELECT columns
FROM table-1
FULL OUTER JOIN table-2
ON table-1.column = table-2.column;

Par exemple :

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Cela renvoie les éléments suivants :

PostgreSQL Jointure externe complète

Toutes les lignes de toutes les tables ont été renvoyées, avec des valeurs nulles là où aucune correspondance n'a été trouvée.

Utiliser pgAdmin

Les tâches ci-dessus peuvent être réalisées dans pgAdmin comme suit. Les sections suivantes détaillent chaque type de jointure étape par étape.

Jointure interne pgAdmin

Les étapes ci-dessous montrent comment exécuter chaque variante de jointure interne dans pgAdmin.

Comment utiliser Theta Join PostgreSQL en utilisant pgAdmin

Voici les étapes à suivre pour utiliser Theta Join. PostgreSQL en utilisant pgAdmin :

Étape 1) Connectez-vous à votre compte pgAdmin

Ouvrez pgAdmin et connectez-vous en utilisant vos informations d'identification

Étape 2) Créer une base de données de démonstration

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

Jointure interne pgAdmin

Étape 3) Tapez la requête

Tapez la requête ci-dessous dans l'éditeur de requête :

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Étape 4) Exécutez la requête

Cliquez sur le bouton Exécuter

Jointure interne pgAdmin

Il devrait renvoyer ce qui suit :

Jointure interne pgAdmin

Rejoindre ÉQUI

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

pgAdmin EQUI Rejoindre

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Étape 4) Cliquez sur le bouton Exécuter.

pgAdmin EQUI Rejoindre

Il devrait renvoyer ce qui suit :

pgAdmin EQUI Rejoindre

Jointure naturelle

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

pgAdmin Rejoindre Naturellement

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT *
FROM Book
NATURAL JOIN Price;

Étape 4) Cliquez sur le bouton Exécuter.

pgAdmin Rejoindre Naturellement

Il devrait renvoyer ce qui suit :

pgAdmin Rejoindre Naturellement

pgAdmin Jointure interne simple

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

pgAdmin Jointure interne simple

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Étape 4) Cliquez sur le bouton Exécuter.

pgAdmin Jointure interne simple

Il devrait renvoyer ce qui suit :

pgAdmin Jointure interne simple

Rejointure externe pgAdmin

Ensuite, exécutez les trois variantes de jointure externe dans pgAdmin en suivant les étapes ci-dessous.

Jointure externe gauche

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

pgAdmin Rejoindre externe gauche

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Étape 4) Cliquez sur le bouton Exécuter.

pgAdmin Rejoindre externe gauche

Il devrait renvoyer ce qui suit :

pgAdmin Rejoindre externe gauche

Jointure externe droite

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

pgAdmin Rejoindre externe droite

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Étape 4) Cliquez sur le bouton Exécuter.

pgAdmin Rejoindre externe droite

Il devrait renvoyer ce qui suit :

pgAdmin Rejoindre externe droite

Jointure externe complète

Étape 1) Connectez-vous à votre compte pgAdmin.

Étape 2)

  • Dans la barre de navigation à gauche, cliquez sur Bases de données.
  • Cliquez sur Démo.

pgAdmin Jointure externe complète

Étape 3) Tapez la requête dans l'éditeur de requêtes :

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Étape 4) Cliquez sur le bouton Exécuter.

pgAdmin Jointure externe complète

Il devrait renvoyer ce qui suit :

pgAdmin Jointure externe complète

Téléchargez la base de données utilisée dans ce tutoriel

FAQ

Une jointure interne (INNER JOIN) ne renvoie que les lignes correspondantes dans les deux tables. Une jointure externe (OUTER JOIN) conserve également les lignes non appariées, en remplaçant les colonnes manquantes par NULL, et peut être de type LEFT JOIN, RIGHT JOIN ou OUTER JOIN selon la table conservée.

Une jointure (JOIN) combine côte à côte les colonnes de différentes tables à l'aide d'une clé commune, en élargissant chaque ligne. Une union (UNION) empile verticalement les lignes de deux ensembles de résultats et requiert le même nombre de colonnes.

Une jointure interne (ou auto-jointure) permet de joindre une table à elle-même en utilisant deux alias de table. Elle est utile pour comparer les lignes d'une même table, par exemple pour associer les employés à leurs responsables respectifs, stockés dans cette même table.

Une jointure croisée (CROSS JOIN) renvoie le produit cartésien, associant chaque ligne de la première table à chaque ligne de la seconde. Elle n'utilise pas de condition ON, ce qui lui permet de produire rapidement des ensembles de résultats très volumineux.

Oui. Vous pouvez enchaîner plusieurs clauses JOIN dans une seule requête, en ajoutant chaque table supplémentaire avec une autre clause JOIN et une condition ON. PostgreSQL les évalue afin de constituer un ensemble de résultats combinés unique.

Les assistants IA comme GitHub Copilot suggèrent le type de jointure approprié, écrivent la condition ON à partir des clés étrangères et signalent une condition manquante qui entraînerait un produit cartésien accidentel, réduisant ainsi les erreurs de jointure courantes.

Oui. Les assistants IA peuvent analyser un plan d'exécution, recommander des index sur les colonnes de jointure et modifier l'ordre ou les conditions de jointure. La base de données garantit toutefois l'exactitude des résultats ; il est donc important de vérifier chaque suggestion avant de la mettre en production.

Aucune jointure n'est systématiquement la plus rapide ; les performances dépendent des index, du nombre de lignes et des filtres. Les jointures internes (INNER JOIN) sur des clés indexées sont généralement efficaces, tandis que les jointures externes complètes (FULL OUTER JOIN) sur de grandes tables non indexées ont tendance à être les plus coûteuses.

Résumez cet article avec :