PostgreSQL Tipuri de îmbinări: interioară, exterioară, stânga, dreapta

⚡ Rezumat inteligent

PostgreSQL Join-urile preiau și combină rânduri din două sau mai multe tabele folosind o cheie partajată și includ join-uri interne, cum ar fi theta, EQUI și naturale, plus join-uri externe care acoperă rezultatele stânga, dreapta și complete.

  • 🔗 Combina: Uniește coloane de îmbinare din mai multe tabele pe baza unei chei comune.
  • 🎯 Alăturare interioară: Jointurile interne returnează doar rândurile în care este îndeplinită condiția de joncțiune.
  • ⬅️ Alăturare stânga: LEFT OUTER JOIN păstrează fiecare rând din stânga tabelului, adăugând valori NULL pentru rândurile din dreapta care nu corespund.
  • ➡️ Alăturarea corectă: RIGHT OUTER JOIN păstrează fiecare rând din dreapta tabelului, adăugând valori NULL pentru rândurile din stânga nepotrivite.
  • ???? Alăturare completă: FULL OUTER JOIN returnează toate rândurile din ambele tabele cu valori NULL în care nu există nicio potrivire.
  • 🤖 Ajutor AI: Asistenții inteligenți artificiali aleg tipul corect de îmbinare și scriu condiția ON.

PostgreSQL Tipuri de alăturare

În ce sunt Join-urile PostgreSQL?

PostgreSQL Se alătură sunt utilizate pentru recuperarea datelor din mai multe tabele. Cu ajutorul joncțiunilor, este posibil să combinăm instrucțiunile SELECT și JOIN într-o singură instrucțiune. O condiție JOIN este adăugată instrucțiunii și sunt returnate toate rândurile care îndeplinesc condițiile. 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.

PostgreSQL Alăturare exterioară

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

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

PostgreSQL Stânga la exterior

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:

PostgreSQL Stânga la exterior

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.

PostgreSQL Alăturați-vă la dreapta

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:

PostgreSQL Alăturați-vă la dreapta

Toate rândurile din tabelul Preț au fost returnate. Au fost returnate doar rândurile din tabelul Carte care au îndeplinit condiția de joncțiune. Al treilea rând nu are nicio valoare pentru nume, deoarece nu s-a 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:

PostgreSQL Alăturare completă exterioară

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ă. Următoarele secțiuni prezintă pas cu pas fiecare tip de asociere.

pgAdmin Inner Join

Pașii de mai jos arată cum se execută fiecare variantă de inner join în pgAdmin.

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

Mai jos sunt pașii pentru a utiliza Theta Join in PostgreSQL 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

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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)

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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)

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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)

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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

Apoi, rulați cele trei variante de joncțiune externă în pgAdmin folosind pașii de mai jos.

Stânga la exterior

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

Pas 2)

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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)

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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)

  • Din bara de navigare din stânga, faceți clic pe Baze de date.
  • 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

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

Întrebări frecvente

O joncțiune INNER JOIN returnează doar rândurile care se potrivesc în ambele tabele. O joncțiune OUTER JOIN păstrează, de asemenea, rândurile nepotrivite, umplând coloanele lipsă cu valori NULL și poate fi la stânga, la dreapta sau completă, în funcție de tabelul păstrat.

O operație JOIN combină coloane din tabele diferite, una lângă alta, folosind o cheie corespondentă, lărgind fiecare rând. O operație UNION stivuiește rândurile a două seturi de rezultate pe verticală și necesită același număr de coloane.

O auto-joinere unește un tabel cu sine însuși folosind două aliasuri de tabel. Este utilă pentru compararea rândurilor dintr-un tabel, cum ar fi potrivirea angajaților cu managerii stocați în același tabel.

O operație CROSS JOIN returnează produsul cartezian, asociind fiecare rând al primului tabel cu fiecare rând al celui de-al doilea. Nu utilizează condiția ON, deci poate produce rapid seturi de rezultate foarte mari.

Da. Puteți înlănțui mai multe clauze JOIN într-o singură interogare, adăugând fiecărui tabel suplimentar o altă condiție JOIN și ON. PostgreSQL le evaluează pentru a construi un singur set combinat de rezultate.

Asistenții inteligenți artificiali precum GitHub Copilot sugerează tipul corect de joncțiune, scriu condiția ON din cheile externe și semnalează o condiție lipsă care ar cauza un produs cartesian accidental, reducând greșelile frecvente de joncțiune.

Da. Asistenții inteligenți artificiali pot citi un plan de interogare, pot recomanda indexuri pe coloanele de joncțiune și pot rescrie ordinea sau condițiile de joncțiune. Baza de date aplică în continuare corectitudinea, așa că examinați fiecare sugestie înainte de a o rula în producție.

Nicio joncțiune singulară nu este întotdeauna cea mai rapidă; performanța depinde de indexuri, număr de rânduri și filtre. JOIN-urile INNER pe cheile indexate sunt de obicei eficiente, în timp ce JOIN-urile FULL OUTER pe tabelele mari neindexate tind să fie cele mai costisitoare.

Rezumați această postare cu: