PostgreSQL Sammenføj typer med eksempler: indre, ydre, venstre, højre

Hvad er joins in PostgreSQL?

PostgreSQL Sammenføjninger bruges til at hente data fra mere end én tabel. Med Joins er det muligt for os at kombinere SELECT- og JOIN-sætningerne til en enkelt erklæring. En JOIN-betingelse tilføjes til erklæringen, og alle rækker, der opfylder betingelserne, returneres. Værdierne fra forskellige tabeller er kombineret baseret på fælles kolonner. Den fælles kolonne er for det meste en primær nøgle i den første tabel og en fremmednøgle i den anden tabel.

PostgreSQL Deltag typer

Der er to typer join-in PostgreSQL:

  • Indvendige sammenføjninger
  • Ydre sammenføjninger

PostgreSQL Indvendig sammenføjning

Der er 3 typer af Inner Joins in PostgreSQL:

  • Theta slutter sig
  • Naturlig sammenføjning
  • EQUI tilslutte sig

Theta Deltag

En theta-sammenføjning giver en mulighed for at forbinde to tabeller baseret på den betingelse, der er repræsenteret af theta. Theta joins kan fungere med alle sammenligninger operators. I de fleste tilfælde omtales theta-sammenføjningen som indre sammenføjning.

Theta join er den mest grundlæggende type JOIN. Det vil returnere alle rækker fra tabellerne, hvor JOIN-betingelsen er opfyldt.

Syntaks:

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

Overvej folloenwing tabeller i demodatabasen:

Bestil:

PostgreSQL Theta Deltag

Pris:

PostgreSQL Theta Deltag

Vi ønsker at se navnet på hver bog og den tilsvarende pris. Vi kan køre folloenwing kommando:

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

Dette vil returnere folloenwing:

PostgreSQL Theta Deltag

Kun 3 rækker opfyldte sammenføjningsbetingelsen.

EQUI Deltag

EQUI-sammenføjningen giver os en måde at forbinde to tabeller baseret på primær nøgle/fremmednøgleforhold. For eksempel:

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

Dette vil returnere folloenwing:

PostgreSQL EQUI Deltag

Poster er blevet returneret fra begge tabeller baseret på de fælles kolonner, det vil sige id-kolonnen.

Naturlig Deltag

Denne type join giver os en anden måde at skrive en EQUI join på. Vi kan forbedre vores tidligere eksempel ved at tilføje nøgleordet NATURAL som vist nedenfor:

SELECT *
FROM Book
NATURAL JOIN Price;

Dette vil returnere folloenwing:

PostgreSQL Naturlig Deltag

Kun én id-kolonne er blevet returneret. NATURAL JOIN var i stand til at bemærke, at id-kolonnen er fælles i de to tabeller. Kun én blev returneret.

Postgres Ydre Join

Der er 3 typer Outer Joins in PostgreSQL:

  • Venstre ydre samling
  • Højre ydre samling
  • Fuld ydre tilslutning

Postgres Venstre Ydre Sammenføjning

LEFT OUTER JOIN returnerer alle rækker i tabellen på venstre side og kun rækkerne i højre side tabel, hvor sammenføjningsbetingelsen er opfyldt.

Syntaks:

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

Vi skal se navnet på hver bog og den tilsvarende pris. Vi kan køre folloenwing kommando:

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

Dette returnerer folloenwing:

Postgres Venstre Ydre Sammenføjning

Alle de 4 rækker i bogtabellen er returneret. Kun 3 rækker fra pristabellen opfyldte sammenføjningsbetingelsen. Derfor blev de returneret. Den sidste bog har ingen tilsvarende prisværdi.

Postgres højre ydre samling

RIGHT OUTER JOIN returnerer alle rækker i tabellen på højre side og rækker i tabellen på venstre side, hvor sammenføjningsbetingelsen er opfyldt.

Syntaks:

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

For eksempel:

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

Dette returnerer folloenwing:

Postgres højre ydre samling

Alle rækkerne i pristabellen er returneret. Kun de rækker i bogtabellen, der opfyldte sammenføjningsbetingelsen, blev returneret. Den 3rd række har ingen værdi for navn, da der ikke blev fundet noget match.

Fuld ydre tilslutning PostgreSQL

Denne type JOIN vil returnere alle rækker i tabellen på venstre side og alle rækker i tabellen på højre side med nuller, hvor joinbetingelsen ikke er opfyldt.

Syntaks:

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

For eksempel:

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

Dette returnerer folloenwing:

Postgres Fuld Ydre Samling

Alle rækker fra alle tabeller er blevet returneret, med nuller, hvor der ikke blev fundet nogen match.

Bruger pgAdmin

Ovenstående opgaver kan udføres i pgAdmin som følger:

pgAdmin Inner Join

Sådan bruger du Theta Deltag i PostgreSQL ved hjælp af pgAdmin

Nedenfor er trinene til at bruge Theta Join i Postgres ved hjælp af pgAdmin:

Trin 1) Log ind på din pgAdmin-konto

Åbn pgAdmin og log ind med dine legitimationsoplysninger

Trin 2) Opret demodatabase

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin Inner Join

Trin 3) Indtast forespørgslen

Indtast nedenstående forespørgsel i forespørgselseditoren:

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

Trin 4) Udfør forespørgslen

Klik på knappen Udfør

pgAdmin Inner Join

Det burde returnere folloenwing:

pgAdmin Inner Join

EQUI Deltag

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin EQUI Deltag

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

pgAdmin EQUI Deltag

Det burde returnere folloenwing:

pgAdmin EQUI Deltag

Naturlig Deltag

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin Natural Join

Trin 3) Indtast forespørgslen i forespørgselseditoren:

SELECT *
FROM Book 
NATURAL JOIN Price;

Trin 4) Klik på knappen Udfør.

pgAdmin Natural Join

Det burde returnere folloenwing:

pgAdmin Natural Join

pgAdmin Enkel indre tilslutning

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin Enkel indre tilslutning

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

pgAdmin Enkel indre tilslutning

Det burde returnere folloenwing:

pgAdmin Enkel indre tilslutning

pgAdmin Outer Join

Venstre ydre samling

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin Venstre Ydre Join

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

pgAdmin Venstre Ydre Join

Det burde returnere folloenwing:

pgAdmin Venstre Ydre Join

Højre ydre samling

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin Højre Ydre Join

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

pgAdmin Højre Ydre Join

Det burde returnere folloenwing:

pgAdmin Højre Ydre Join

Fuld ydre tilslutning

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Fra navigationslinjen til venstre - Klik på Databaser.
  2. Klik på Demo.

pgAdmin Fuld Outer Join

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

pgAdmin Fuld Outer Join

Det burde returnere folloenwing:

pgAdmin Fuld Outer Join

Resumé

  • In PostgreSQL, bruger vi JOINs, når vi skal hente værdier fra mere end én tabel.
  • INNER JOIN er den mest grundlæggende type JOIN. Den returnerer alle poster, hvor den angivne JOIN-betingelse var opfyldt.
  • LEFT OUTER JOIN returnerer alle rækker i den venstre tabel og kun rækkerne i den anden tabel, hvor sammenføjningsbetingelsen er opfyldt.
  • RIGHT OUTER JOIN returnerer alle rækker i den højre tabel og kun rækker i den anden tabel, hvor sammenføjningsbetingelsen er opfyldt.
  • Denne type JOIN returnerer alle rækker i den venstre tabel og alle rækker i den højre tabel med nuller, hvor joinbetingelsen ikke er opfyldt.

Download databasen brugt i denne vejledning