PostgreSQL Vrste spajanja s primjerima: unutarnji, vanjski, lijevi, desni

U čemu su spojevi PostgreSQL?

PostgreSQL Pridružuje koriste se za dohvaćanje podataka iz više od jedne tablice. Pomoću spojeva moguće je kombinirati naredbe SELECT i JOIN u jednu naredbu. Uvjet JOIN dodaje se naredbi i vraćaju se svi redovi koji ispunjavaju uvjete. Vrijednosti iz različitih tablica kombiniraju se na temelju zajedničkih stupaca. Zajednički stupac uglavnom je primarni ključ u prvoj tablici i strani ključ u drugoj tablici.

PostgreSQL Vrste spajanja

Postoje dvije vrste spajanja PostgreSQL:

  • Unutarnji spojevi
  • Vanjski spojevi

PostgreSQL Unutarnje pridruživanje

Postoje 3 vrste unutarnjih spojeva PostgreSQL:

  • Theta spoj
  • Prirodno spajanje
  • Pridružite se EQUI

Theta Pridružite se

Theta spajanje omogućuje spajanje dviju tablica na temelju uvjeta koji predstavlja theta. Theta spojevi mogu raditi sa svim operatorima usporedbe. U većini slučajeva, theta spajanje se naziva unutarnjim spajanjem.

Theta spajanje je najosnovniji tip JOIN-a. Vratit će sve retke iz tablica u kojima je JOIN uvjet zadovoljen.

Sintaksa:

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

Razmotrite sljedeće tablice Demo baze podataka:

Rezervirati:

PostgreSQL Theta Pridružite se

Cijena:

PostgreSQL Theta Pridružite se

Želimo vidjeti naziv svake knjige i odgovarajuću cijenu. Možemo pokrenuti sljedeću naredbu:

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

Ovo će vratiti sljedeće:

PostgreSQL Theta Pridružite se

Samo su 3 retka zadovoljila uvjet spajanja.

EQUI Pridružite se

EQUI spajanje pruža nam način spajanja dviju tablica na temelju odnosa primarni ključ/strani ključ. Na primjer:

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

Ovo će vratiti sljedeće:

PostgreSQL EQUI Pridružite se

Zapisi su vraćeni iz obje tablice na temelju zajedničkih stupaca, odnosno stupca id.

Prirodni spoj

Ova vrsta pridruživanja nam daje još jedan način pisanja EQUI pridruživanja. Možemo poboljšati naš prethodni primjer dodavanjem ključne riječi NATURAL kao što je prikazano u nastavku:

SELECT *
FROM Book
NATURAL JOIN Price;

Ovo će vratiti sljedeće:

PostgreSQL Prirodni spoj

Vraćen je samo jedan ID stupac. NATURAL JOIN je mogao primijetiti da je id stupac zajednički u dvije tablice. Samo je jedan vraćen.

Postgres vanjski spoj

Postoje 3 vrste vanjskih spojeva PostgreSQL:

  • Lijevi vanjski spoj
  • Desni vanjski spoj
  • Potpuno vanjsko pridruživanje

Postgres lijevo vanjsko spajanje

LEFT OUTER JOIN će vratiti sve retke u tablici na lijevoj strani i samo retke u tablici s desne strane gdje je uvjet spajanja zadovoljen.

Sintaksa:

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

Moramo vidjeti naziv svake knjige i odgovarajuću cijenu. Možemo pokrenuti sljedeću naredbu:

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

Ovo vraća sljedeće:

Postgres lijevo vanjsko spajanje

Sva 4 retka u tablici Knjiga su vraćena. Samo 3 retka iz tablice cijena ispunjavaju uvjet spajanja. Stoga su vraćeni. Posljednja knjiga nema odgovarajuću cjenovnu vrijednost.

Postgres desni vanjski spoj

RIGHT OUTER JOIN vraća sve retke u tablici s desne strane i retke u tablici s lijeve strane gdje je uvjet spajanja zadovoljen.

Sintaksa:

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

Na primjer:

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

Ovo vraća sljedeće:

Postgres desni vanjski spoj

Svi retci u tablici cijena su vraćeni. Vraćeni su samo retci u tablici knjiga koji su zadovoljili uvjet spajanja. 3rd redak nema vrijednost za ime jer nije pronađeno podudaranje.

Potpuno vanjsko pridruživanje PostgreSQL

Ova vrsta JOIN će vratiti sve retke u tablici na lijevoj strani i sve retke u tablici na desnoj strani s nulama gdje uvjet spajanja nije zadovoljen.

Sintaksa:

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

Na primjer:

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

Ovo vraća sljedeće:

Postgres Full Outer Join

Svi retci iz svih tablica su vraćeni, s nulama gdje nije pronađeno podudaranje.

Koristeći pgAdmin

Gore navedeni zadaci mogu se izvršiti u pgAdmin-u na sljedeći način:

pgAdmin Unutarnje pridruživanje

Kako koristiti Theta Pridružite se PostgreSQL koristeći pgAdmin

U nastavku su navedeni koraci za korištenje Theta Join-a u Postgresu pomoću pgAdmin-a:

Korak 1) Prijavite se na svoj pgAdmin račun

Otvorite pgAdmin i prijavite se koristeći svoje vjerodajnice

Korak 2) Stvorite demo bazu podataka

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin Unutarnje pridruživanje

Korak 3) Upišite upit

Unesite upit u nastavku u uređivač upita:

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

Korak 4) Izvršite upit

Pritisnite gumb Izvrši

pgAdmin Unutarnje pridruživanje

Trebao bi vratiti sljedeće:

pgAdmin Unutarnje pridruživanje

EQUI Pridružite se

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin EQUI Pridružite se

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

pgAdmin EQUI Pridružite se

Trebao bi vratiti sljedeće:

pgAdmin EQUI Pridružite se

Prirodni spoj

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin Prirodno pridruživanje

Korak 3) Unesite upit u uređivač upita:

SELECT *
FROM Book 
NATURAL JOIN Price;

Korak 4) Pritisnite gumb Izvrši.

pgAdmin Prirodno pridruživanje

Trebao bi vratiti sljedeće:

pgAdmin Prirodno pridruživanje

pgAdmin Jednostavno unutarnje spajanje

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin Jednostavno unutarnje spajanje

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

pgAdmin Jednostavno unutarnje spajanje

Trebao bi vratiti sljedeće:

pgAdmin Jednostavno unutarnje spajanje

pgAdmin vanjsko spajanje

Lijevi vanjski spoj

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin lijevo vanjsko spajanje

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

pgAdmin lijevo vanjsko spajanje

Trebao bi vratiti sljedeće:

pgAdmin lijevo vanjsko spajanje

Desni vanjski spoj

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin Desno vanjsko spajanje

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

pgAdmin Desno vanjsko spajanje

Trebao bi vratiti sljedeće:

pgAdmin Desno vanjsko spajanje

Potpuno vanjsko pridruživanje

Korak 1) Prijavite se na svoj pgAdmin račun.

Korak 2)

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

pgAdmin Potpuno vanjsko spajanje

Korak 3) Unesite upit u uređivač upita:

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

Korak 4) Pritisnite gumb Izvrši.

pgAdmin Potpuno vanjsko spajanje

Trebao bi vratiti sljedeće:

pgAdmin Potpuno vanjsko spajanje

Rezime

  • In PostgreSQL, koristimo JOIN-ove kada trebamo dohvatiti vrijednosti iz više od jedne tablice.
  • INNER JOIN je najosnovniji tip JOIN-a. Vraća sve zapise u kojima je zadovoljen uvjet JOIN.
  • LEFT OUTER JOIN vraća sve retke u lijevoj tablici i samo retke u drugoj tablici gdje je uvjet spajanja zadovoljen.
  • RIGHT OUTER JOIN vraća sve retke u desnoj tablici i samo retke u drugoj tablici gdje je uvjet spajanja zadovoljen.
  • Ova vrsta JOIN vraća sve retke u lijevoj tablici i sve retke u desnoj tablici s nulama gdje uvjet spajanja nije zadovoljen.

Preuzmite bazu podataka korištenu u ovom vodiču