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:
Pris:
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:
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:
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:
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:
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:
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:
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
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
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
Det bör returnera följande:
EQUI Gå med
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
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.
Det bör returnera följande:
Naturlig gå med
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
Steg 3) Skriv in frågan i frågeredigeraren:
SELECT * FROM Book NATURAL JOIN Price;
Steg 4) Klicka på knappen Kör.
Det bör returnera följande:
pgAdmin Enkel Inre Join
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
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.
Det bör returnera följande:
pgAdmin Outer Join
Vänster yttre anslutning
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
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.
Det bör returnera följande:
Höger yttre anslutning
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
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.
Det bör returnera följande:
Full yttre anslutning
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Klicka på Databaser i navigeringsfältet till vänster.
- Klicka på Demo.
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.
Det bör returnera följande:
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