PostgreSQL Tipuri de alăturare cu exemple: interior, exterior, stânga, dreapta

În ce sunt Join-urile PostgreSQL?

PostgreSQL Se alătură sunt utilizate pentru preluarea datelor din mai multe tabele. Cu Joins, este posibil să combinăm instrucțiunile SELECT și JOIN într-o singură instrucțiune. O condiție JOIN este adăugată la instrucțiune și toate rândurile care îndeplinesc condițiile sunt returnate. Valorile din diferite tabele sunt combinate pe baza coloanelor comune. Coloana comună este în mare parte o cheie primară în primul tabel și o cheie externă a celui de-al doilea tabel.

PostgreSQL Tipuri de alăturare

Există două tipuri de Joinuri PostgreSQL:

  • Imbinari interioare
  • Imbinari exterioare

PostgreSQL Alăturare interioară

Există 3 tipuri de uniuni interioare PostgreSQL:

  • Theta se alătură
  • Unire naturală
  • EQUI se alătură

Theta Join

O îmbinare theta permite să se alăture două tabele în funcție de condiția reprezentată de teta. Combinațiile Theta pot funcționa cu toți operatorii de comparație. În cele mai multe cazuri, îmbinarea theta este denumită îmbinare interioară.

Uniunea theta este cel mai elementar tip de JOIN. Va returna toate rândurile din tabelele în care condiția JOIN este îndeplinită.

Sintaxă:

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

Luați în considerare următoarele tabele din baza de date Demo:

Carte:

PostgreSQL Theta Join

Preț:

PostgreSQL Theta Join

Vrem să vedem numele fiecărei cărți și prețul corespunzător. Putem rula următoarea comandă:

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

Aceasta va returna următoarele:

PostgreSQL Theta Join

Doar 3 rânduri au îndeplinit condiția de alăturare.

Alăturați-vă EQUI

Unirea EQUI ne oferă o modalitate de a uni două tabele bazate pe relația cheie primară/cheie străină. De exemplu:

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

Aceasta va returna următoarele:

PostgreSQL Alăturați-vă EQUI

Înregistrările au fost returnate din ambele tabele pe baza coloanelor comune, adică coloana id.

Asociere naturală

Acest tip de alăturare ne oferă o altă modalitate de a scrie o alăturare EQUI. Putem îmbunătăți exemplul nostru anterior adăugând cuvântul cheie NATURAL, așa cum se arată mai jos:

SELECT *
FROM Book
NATURAL JOIN Price;

Aceasta va returna următoarele:

PostgreSQL Asociere naturală

Doar o coloană ID a fost returnată. NATURAL JOIN a putut observa că coloana id este comună în cele două tabele. Doar unul a fost returnat.

Postgres Outer Join

Există 3 tipuri de îmbinări exterioare PostgreSQL:

  • Stânga la exterior
  • Alăturați-vă la dreapta
  • Alăturare completă exterioară

Postgres Left Outer Join

LEFT OUTER JOIN va returna toate rândurile din tabel din partea stângă și numai rândurile din tabelul din dreapta unde condiția de îmbinare a fost îndeplinită.

Sintaxă:

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

Trebuie să vedem numele fiecărei cărți și prețul corespunzător. Putem rula următoarea comandă:

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

Aceasta returnează următoarele:

Postgres Left Outer Join

Toate cele 4 rânduri din tabelul Book au fost returnate. Doar 3 rânduri din tabelul Preț au îndeplinit condiția de alăturare. Prin urmare, au fost returnați. Ultima carte nu are o valoare de preț corespunzătoare.

Postgres Right Outer Join

RIGHT OUTER JOIN returnează toate rândurile din tabel din partea dreaptă și rândurile din tabel din partea stângă unde condiția de îmbinare a fost îndeplinită.

Sintaxă:

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

De exemplu:

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

Aceasta returnează următoarele:

Postgres Right Outer Join

Toate rândurile din tabelul Preț au fost returnate. Au fost returnate numai rândurile din tabelul Book care au îndeplinit condiția de alăturare. Cele 3rd rândul nu are valoare pentru nume, deoarece nu a fost găsită nicio potrivire.

Alăturați-vă complet exterior PostgreSQL

Acest tip de JOIN va returna toate rândurile din tabel din partea stângă și toate rândurile din tabel din partea dreaptă cu valori nule în cazul în care condiția de îmbinare nu este îndeplinită.

Sintaxă:

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

De exemplu:

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

Aceasta returnează următoarele:

Postgres Full Outer Join

Toate rândurile din toate tabelele au fost returnate, cu valori nule unde nu a fost găsită nicio potrivire.

Folosind pgAdmin

Sarcinile de mai sus pot fi realizate în pgAdmin după cum urmează:

pgAdmin Inner Join

Cum să utilizați Theta Join in PostgreSQL folosind pgAdmin

Mai jos sunt pașii pentru a utiliza Theta Join în Postgres folosind pgAdmin:

Pasul 1) Conectați-vă la contul dvs. pgAdmin

Deschideți pgAdmin și conectați-vă folosind datele dvs. de acreditare

Pasul 2) Creați baza de date Demo

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin Inner Join

Pasul 3) Introduceți interogarea

Introduceți interogarea de mai jos în editorul de interogări:

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

Pasul 4) Executați interogarea

Faceți clic pe butonul Execute

pgAdmin Inner Join

Ar trebui să returneze următoarele:

pgAdmin Inner Join

Alăturați-vă EQUI

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin EQUI Alăturați-vă

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

pgAdmin EQUI Alăturați-vă

Ar trebui să returneze următoarele:

pgAdmin EQUI Alăturați-vă

Asociere naturală

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin Natural Join

Pas 3) Introduceți interogarea în editorul de interogări:

SELECT *
FROM Book 
NATURAL JOIN Price;

Pas 4) Faceți clic pe butonul Execute.

pgAdmin Natural Join

Ar trebui să returneze următoarele:

pgAdmin Natural Join

pgAdmin Alăturare interioară simplă

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin Alăturare interioară simplă

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

pgAdmin Alăturare interioară simplă

Ar trebui să returneze următoarele:

pgAdmin Alăturare interioară simplă

pgAdmin Outer Join

Stânga la exterior

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin Left Outer Join

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

pgAdmin Left Outer Join

Ar trebui să returneze următoarele:

pgAdmin Left Outer Join

Alăturați-vă la dreapta

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin Right Outer Join

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

pgAdmin Right Outer Join

Ar trebui să returneze următoarele:

pgAdmin Right Outer Join

Alăturare completă exterioară

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

pgAdmin Full Outer Join

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

pgAdmin Full Outer Join

Ar trebui să returneze următoarele:

pgAdmin Full Outer Join

Rezumat

  • In PostgreSQL, folosim JOIN-urile atunci când trebuie să extragem valori din mai mult de un tabel.
  • INNER JOIN este cel mai elementar tip de JOIN. Returnează toate înregistrările în care condiția JOIN specificată a fost îndeplinită.
  • LEFT OUTER JOIN returnează toate rândurile din tabelul din stânga și numai rândurile din celălalt tabel în care condiția de îmbinare a fost îndeplinită.
  • RIGHT OUTER JOIN returnează toate rândurile din tabelul din dreapta și numai rândurile din celălalt tabel în care condiția de îmbinare a fost îndeplinită.
  • Acest tip de JOIN returnează toate rândurile din tabelul din stânga și toate rândurile din tabelul din dreapta cu valori nule în cazul în care condiția de îmbinare nu este îndeplinită.

Descărcați baza de date folosită în acest tutorial