Vad är PostgreSQL-anslutningar?
PostgreSQL JOINs 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-uttalandena i ett enda uttalande. Ett JOIN-villkor läggs till i uttalandet och alla rader som uppfyller villkoren returneras.
Värdena från olika tabeller kombineras baserat på vanliga kolumner. Den gemensamma kolumnen är mestadels en primär nyckel i den första tabellen och en främmande nyckel i den andra tabellen.
I denna PostgreSQL-handledning lär du dig:
- Vad är PostgreSQL-anslutningar?
- Typer av anslutningar
- Inre sammanfogningar
- Theta gå med
- EQUI Gå med
- Natural Join
- Yttre sammanfogningar
- VÄNSTER YTTRE GÅNG
- RÄTT YTTRE GÅ MED
- Fullständig yttre anslutning
- Använda pgAdmin
- Inre sammanfogningar
- Theta gå med
- EQUI Gå med
- Natural Join
- INNER JOIN (enkel anslutning)
- Yttre sammanfogningar
- VÄNSTER YTTRE GÅNG
- RÄTT YTTRE GÅ MED
- Fullständig yttre anslutning
Typer av anslutningar
Det finns två JOIN-typer i PostgreSQL:
- Inre sammanfogningar
- Yttre anslutning
Inre sammanfogningar
Det finns tre typer av innerfogar:
- Theta går med
- Naturlig anslutning
- EQUI gå med
Theta gå med
En theta-koppling tillåter en att gå med i två tabeller baserat på det tillstånd som representeras av theta. Theta-anslutningar kan arbeta med alla jämförelseoperatörer. I de flesta fall kallas theta-kopplingen som inre koppling.
Theta-kopplingen är den mest grundläggande typen av JOIN. Den returnerar alla rader från tabellerna där JOIN-villkoret är uppfyllt.
Syntax:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Tänk på följande tabeller i demo-databasen:
Bok:
Pris:
Vi vill se namnet på varje bok och motsvarande pris. Vi kan köra följande kommando:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Detta returnerar följande:
Endast tre rader uppfyller anslutningsvillkoret.
EQUI Gå med
EQUI-kopplingen ger oss ett sätt att gå med i två tabeller baserat på förhållandet mellan primär nyckel och främmande nyckel. Till exempel:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Detta returnerar följande:
Poster har returnerats från båda tabellerna baserat på de vanliga kolumnerna, det vill säga id-kolumnen.
Natural Join
Denna typ av koppling ger oss ett annat sätt att skriva en EQUI-koppling. Vi kan förbättra vårt tidigare exempel genom att lägga till nyckelordet NATUR enligt nedan:
SELECT *FROM BookNATURAL JOIN Price;
Detta returnerar följande:
Endast en id-kolumn har returnerats. NATURAL JOIN kunde notera att id-kolumnen är vanlig i de två tabellerna. Endast en återlämnades.
Yttre sammanfogningar
Det finns tre typer av yttre JOINs i PostgreSQL:
- Vänster yttre anslutning.
- Höger yttre anslutning.
- Fullständig yttre anslutning
VÄNSTER YTTRE GÅNG
VÄNSTER OUTER JOIN returnerar alla rader i tabellen på vänster sida och endast raderna i höger sidotabell där kopplingsvillkoret har uppfyllts.
Syntax:
SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON 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.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Detta returnerar följande:
Alla de fyra raderna i boktabellen har returnerats. Endast tre rader från pristabellen uppfyllde villkoret för anslutning. Därför återlämnades de. Den sista boken har inget motsvarande prisvärde.
RÄTT YTTRE GÅ MED
RIGHT OUTER JOIN returnerar alla rader i tabellen på höger sida och rader i tabellen på vänster sida där kopplingsvillkoret har uppfyllts.
Syntax:
SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Till exempel:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Detta returnerar följande:
Alla rader i pristabellen har returnerats. Endast raderna i boktabellen som uppfyllde kopplingsvillkoret returnerades. Den tredje raden har inget värde för namn eftersom ingen matchning hittades.
Fullständig yttre anslutning
Denna typ av JOIN returnerar alla rader i tabellen på vänster sida och alla rader i tabellen på höger sida med nollor där kopplingsvillkoret inte är uppfyllt.
Syntax:
SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Till exempel:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Detta returnerar följande:
Alla rader från alla tabeller har returnerats, med nollor där ingen matchning hittades.
Använda pgAdmin
Ovanstående uppgifter kan utföras i pgAdmin enligt följande:
Inre sammanfogningar
Theta gå med
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
EQUI Gå med
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
Natural Join
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT *FROM BookNATURAL JOIN Price;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
INNER JOIN (enkel anslutning)
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
Yttre sammanfogningar
VÄNSTER YTTRE GÅNG
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
RÄTT YTTRE GÅ MED
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
Fullständig yttre anslutning
Steg 1) Logga in på ditt pgAdmin-konto.
Steg 2)
- Från navigeringsfältet till vänster - Klicka på databaser.
- Klicka på Demo.
Steg 3) Skriv frågan i frågeditoren:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Steg 4) Klicka på knappen Kör.
Den ska returnera följande:
Sammanfattning:
- I 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.
- VÄNSTER 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 höger tabell och endast rader i den andra tabellen där kopplingsvillkoret 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 kopplingsvillkoret inte är uppfyllt.
Ladda ner databasen som används i denna handledning