PostgreSQL Gå med typer med exempel: Inre, Yttre, Vänster, Höger

Vad är går med i PostgreSQL?

PostgreSQL Fogar används för att hämta data från mer än en tabell. Med Joins är det möjligt för oss att kombinera SELECT- och JOIN-satserna till en enda sats. Ett JOIN-villkor läggs till i satsen och alla rader som uppfyller villkoren returneras. Värdena från olika tabeller kombineras utifrån gemensamma kolumner. Den vanliga kolumnen är oftast en primärnyckel i den första tabellen och en främmande nyckel i den andra tabellen.

PostgreSQL Gå med Typer

Det finns två typer av Joins in PostgreSQL:

  • Inre sammanfogningar
  • Yttre sammanfogningar

PostgreSQL Inre koppling

Det finns 3 typer av Inner Joins in PostgreSQL:

  • Theta går med
  • Naturlig anslutning
  • EQUI gå med

Theta Gå med

En theta-join tillåter en att sammanfoga två tabeller baserat på villkoret som representeras av theta. Theta joins kan fungera med alla jämförelseoperatorer. I de flesta fall kallas theta-kopplingen som inre koppling.

Theta join är den mest grundläggande typen av JOIN. Det kommer att returnera alla rader från tabellerna där JOIN-villkoret är uppfyllt.

Syntax:

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

Tänk på följande tabeller i demodatabasen:

Bok:

PostgreSQL Theta Gå med

Pris:

PostgreSQL Theta Gå med

Vi vill se namnet på varje bok och motsvarande pris. Vi kan köra följande kommando:

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

Detta kommer att returnera följande:

PostgreSQL Theta Gå med

Endast 3 rader uppfyllde sammanfogningsvillkoret.

EQUI Gå med

EQUI-anslutningen ger oss ett sätt att sammanfoga två tabeller baserat på relationen primärnyckel/främmande nyckel. Till exempel:

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

Detta kommer att returnera följande:

PostgreSQL EQUI Gå med

Poster har returnerats från båda tabellerna baserat på de vanliga kolumnerna, det vill säga id-kolumnen.

Naturlig gå med

Denna typ av join ger oss ett annat sätt att skriva en EQUI join. Vi kan förbättra vårt tidigare exempel genom att lägga till nyckelordet NATURAL som visas nedan:

SELECT *
FROM Book
NATURAL JOIN Price;

Detta kommer att returnera följande:

PostgreSQL Naturlig gå med

Endast en id-kolumn har returnerats. NATURAL JOIN kunde notera att id-kolumnen är vanlig i de två tabellerna. Endast en lämnades tillbaka.

Postgres Outer Join

Det finns 3 typer av Outer Joins in PostgreSQL:

  • Vänster yttre anslutning
  • Höger yttre anslutning
  • Full yttre anslutning

Postgres Vänster Yttre Join

LEFT OUTER JOIN returnerar alla rader i tabellen på vänster sida och endast raderna i den högra sidotabellen där sammanfogningsvillkoret har uppfyllts.

Syntax:

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

Vi måste se namnet på varje bok och motsvarande pris. Vi kan köra följande kommando:

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

Detta returnerar följande:

Postgres Vänster Yttre Join

Alla de fyra raderna i boktabellen har returnerats. Endast 4 rader från pristabellen uppfyllde sammanfogningsvillkoret. Därför återlämnades de. Den sista boken har inget motsvarande prisvärde.

Postgres höger ytterskarv

RIGHT OUTER JOIN returnerar alla rader i tabellen på höger sida och rader i tabellen på vänster sida där sammanfogningsvillkoret har uppfyllts.

Syntax:

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

Till exempel:

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

Detta returnerar följande:

Postgres höger ytterskarv

Alla rader i pristabellen har returnerats. Endast raderna i boktabellen som uppfyllde sammanfogningsvillkoret returnerades. Den 3rd rad har inget värde för namn eftersom ingen matchning hittades.

Full Outer Anslut PostgreSQL

Denna typ av JOIN kommer att returnera alla rader i tabellen på vänster sida och alla rader i tabellen på höger sida med nollor där joinvillkoret inte är uppfyllt.

Syntax:

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

Till exempel:

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

Detta returnerar följande:

Postgres Full Outer Join

Alla rader från alla tabeller har returnerats, med nollor där ingen matchning hittades.

Använder pgAdmin

Ovanstående uppgifter kan utföras i pgAdmin enligt följande:

pgAdmin Inner Join

Så här använder du Theta Gå med PostgreSQL med pgAdmin

Nedan följer stegen för att använda Theta Join i Postgres med pgAdmin:

Steg 1) Logga in på ditt pgAdmin-konto

Öppna pgAdmin och logga in med dina referenser

Steg 2) Skapa demodatabas

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin Inner Join

Steg 3) Skriv in frågan

Skriv in frågan nedan i frågeredigeraren:

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

Steg 4) Utför frågan

Klicka på knappen Kör

pgAdmin Inner Join

Det bör returnera följande:

pgAdmin Inner Join

EQUI Gå med

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin EQUI Gå med

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

pgAdmin EQUI Gå med

Det bör returnera följande:

pgAdmin EQUI Gå med

Naturlig gå med

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin Naturlig Gå med

Steg 3) Skriv in frågan i frågeredigeraren:

SELECT *
FROM Book 
NATURAL JOIN Price;

Steg 4) Klicka på knappen Kör.

pgAdmin Naturlig Gå med

Det bör returnera följande:

pgAdmin Naturlig Gå med

pgAdmin Enkel Inre Join

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin Enkel Inre Join

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

pgAdmin Enkel Inre Join

Det bör returnera följande:

pgAdmin Enkel Inre Join

pgAdmin Outer Join

Vänster yttre anslutning

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin Left Outer Join

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

pgAdmin Left Outer Join

Det bör returnera följande:

pgAdmin Left Outer Join

Höger yttre anslutning

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin Right Outer Join

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

pgAdmin Right Outer Join

Det bör returnera följande:

pgAdmin Right Outer Join

Full yttre anslutning

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

pgAdmin Full Outer Join

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

pgAdmin Full Outer Join

Det bör returnera följande:

pgAdmin Full Outer Join

Sammanfattning

  • In PostgreSQL, använder vi JOINs när vi behöver hämta värden från mer än en tabell.
  • INNER JOIN är den mest grundläggande typen av JOIN. Den returnerar alla poster där det angivna JOIN-villkoret var uppfyllt.
  • LEFT OUTER JOIN returnerar alla rader i den vänstra tabellen och endast raderna i den andra tabellen där kopplingsvillkoret har uppfyllts.
  • RIGHT OUTER JOIN returnerar alla rader i den högra tabellen och endast rader i den andra tabellen där sammanfogningsvillkoret har uppfyllts.
  • Denna typ av JOIN returnerar alla rader i den vänstra tabellen och alla rader i den högra tabellen med nollor där joinvillkoret inte är uppfyllt.

Ladda ner den databas som används i denna handledning

Dagligt Guru99-nyhetsbrev

Kickstarta dagen med de senaste och viktigaste AI-nyheterna som levereras just nu.