Jointures PostgreSQL: interne, externe, gauche, droite, naturelle avec des exemples

Table des matières:

Anonim

Que sont les jointures PostgreSQL?

Les JOIN PostgreSQL sont utilisés pour récupérer des données à partir de plusieurs tables. Avec JOINs, il nous est possible de combiner les instructions SELECT et JOIN en une seule instruction. Une condition JOIN est ajoutée à l'instruction et toutes les lignes qui remplissent les conditions sont renvoyées.

Les valeurs de différentes tables sont combinées en fonction de colonnes communes. La colonne commune est principalement une clé primaire dans la première table et une clé étrangère de la deuxième table.

Dans ce didacticiel PostgreSQL, vous apprendrez:

  • Que sont les jointures PostgreSQL?
  • Types de jointures
  • Jointures intérieures
    • Rejoindre Theta
    • Rejoindre EQUI
    • Jointure naturelle
  • Jointures externes
    • JOINTURE EXTERNE GAUCHE
    • JOINTURE EXTÉRIEURE DROITE
    • Jointure externe complète
  • Utilisation de pgAdmin
  • Jointures intérieures
    • Rejoindre Theta
    • Rejoindre EQUI
    • Jointure naturelle
    • INNER JOIN (jointure simple)
  • Jointures externes
    • JOINTURE EXTERNE GAUCHE
    • JOINTURE EXTÉRIEURE DROITE
    • Jointure externe complète

Types de jointures

Il existe deux types de JOIN dans PostgreSQL:

  • Jointures intérieures
  • Jointure externe

Jointures intérieures

Il existe 3 types de jointures internes:

  • Rejoindre Theta
  • Jointure naturelle
  • Rejoindre EQUI

Rejoindre Theta

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 le plus élémentaire de JOIN. Il renverra toutes les lignes des tables où la condition JOIN est satisfaite.

Syntaxe:

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

Considérez les tableaux suivants de la base de données de démonstration:

Livre:

Prix:

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

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Cela renverra ce qui suit:

Seules 3 lignes remplissaient la condition de jointure.

Rejoindre EQUI

La jointure EQUI nous permet de joindre deux tables en fonction de la relation clé primaire / clé étrangère. Par exemple:

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

Cela renverra ce qui suit:

Les enregistrements ont été renvoyés à partir des deux tables en fonction des colonnes communes, c'est-à-dire de 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 BookNATURAL JOIN Price;

Cela renverra ce qui suit:

Une seule colonne d'identifiant a été renvoyée. Le NATURAL JOIN a pu constater que la colonne id est commune aux deux tables. Un seul a été renvoyé.

Jointures externes

Il existe trois types de jointures externes dans PostgreSQL:

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

JOINTURE EXTERNE GAUCHE

LEFT OUTER JOIN renverra toutes les lignes de la table sur le côté gauche et uniquement les lignes de la table de droite où la condition de jointure a été satisfaite.

Syntaxe:

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

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

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Cela renvoie ce qui suit:

Toutes les 4 lignes de la table Book ont ​​été renvoyées. Seules 3 lignes de la table Price remplissaient la condition de jointure. Par conséquent, ils ont été renvoyés. Le dernier livre n'a pas de valeur de prix correspondante.

JOINTURE EXTÉRIEURE DROITE

RIGHT OUTER JOIN renvoie toutes les lignes de la table sur le côté droit et les lignes de la table sur le côté gauche où la condition de jointure a été satisfaite.

Syntaxe:

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

Par exemple:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Cela renvoie ce qui suit:

Toutes les lignes de la table Price ont été renvoyées. Seules les lignes de la table Book qui remplissaient la condition de jointure ont été renvoyées. La troisième ligne n'a pas de valeur pour le nom car aucune correspondance n'a été trouvée.

Jointure externe complète

Ce type de JOIN renverra toutes les lignes de la table sur le côté gauche et toutes les lignes de la table sur le côté droit avec des valeurs nulles où la condition de jointure n'est pas satisfaite.

Syntaxe:

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

Par exemple:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Cela renvoie ce qui suit:

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

Utilisation de pgAdmin

Les tâches ci-dessus peuvent être accomplies dans pgAdmin comme suit:

Jointures intérieures

Rejoindre Theta

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

Étape 2)

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

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

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

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

Il doit renvoyer ce qui suit:

Rejoindre EQUI

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

Étape 2)

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

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

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

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

Il doit renvoyer ce qui suit:

Jointure naturelle

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

Étape 2)

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

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

SELECT *FROM BookNATURAL JOIN Price;

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

Il doit renvoyer ce qui suit:

INNER JOIN (jointure simple)

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

Étape 2)

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

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

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

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

Il doit renvoyer ce qui suit:

Jointures externes

JOINTURE EXTERNE GAUCHE

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

Étape 2)

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

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

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

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

Il doit renvoyer ce qui suit:

JOINTURE EXTÉRIEURE DROITE

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

Étape 2)

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

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

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

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

Il doit renvoyer ce qui suit:

Jointure externe complète

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

Étape 2)

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

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

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

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

Il doit renvoyer ce qui suit:

Résumé:

  • Dans PostgreSQL, nous utilisons des JOINs lorsque nous avons besoin de récupérer des valeurs de plusieurs tables.
  • L'INNER JOIN est le type le plus basique de JOIN. Il renvoie tous les enregistrements où la condition JOIN spécifiée a été satisfaite.
  • Le LEFT OUTER JOIN renvoie toutes les lignes de la table de gauche et uniquement les lignes de l'autre table où la condition de jointure a été satisfaite.
  • La RIGHT OUTER JOIN renvoie toutes les lignes de la table de droite et uniquement les lignes de l'autre table où la condition de jointure a été satisfaite.
  • Ce type de JOIN renvoie toutes les lignes de la table de gauche et toutes les lignes de la table de droite avec des valeurs nulles lorsque la condition de jointure n'est pas satisfaite.

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