PostgreSQL se alătură: interior, exterior, stânga, dreapta, natural cu exemple

Cuprins:

Anonim

Ce sunt PostgreSQL Joins?

PostgreSQL JOIN sunt utilizate pentru preluarea datelor din mai multe tabele. Cu JOIN-uri, este posibil să combinăm instrucțiunile SELECT și JOIN într-o singură instrucțiune. O condiție JOIN este adăugată la declarație și toate rândurile care îndeplinesc condițiile sunt returnate.

Valorile din diferite tabele sunt combinate pe baza coloanelor comune. Coloana comună este în principal o cheie principală în primul tabel și o cheie externă a celui de-al doilea tabel.

În acest tutorial PostgreSQL, veți învăța:

  • Ce sunt PostgreSQL Joins?
  • Tipuri de îmbinări
  • Alăturări interioare
    • Theta Join
    • EQUI Alătură-te
    • Alăturați-vă natural
  • Îmbinări exterioare
    • ÎNREGISTRARE ÎN EXTERIOR
    • ÎNREGISTRAȚI-VĂ ÎN DREAPTA
    • Alăturare completă exterioară
  • Folosind pgAdmin
  • Alăturări interioare
    • Theta Join
    • EQUI Alătură-te
    • Alăturați-vă natural
    • INNER JOIN (unire simplă)
  • Îmbinări exterioare
    • ÎNREGISTRARE ÎN EXTERIOR
    • ÎNREGISTRAȚI-VĂ ÎN DREAPTA
    • Alăturare completă exterioară

Tipuri de îmbinări

Există două tipuri JOIN în PostgreSQL:

  • Alăturări interioare
  • Alăturare exterioară

Alăturări interioare

Există 3 tipuri de îmbinări interioare:

  • Theta se alătură
  • Alăturare naturală
  • Alătură-te EQUI

Theta Join

O îmbinare theta permite unul să unească două tabele pe baza condiției reprezentate de theta. Îmbinările Theta pot funcționa cu toți operatorii de comparație. În majoritatea cazurilor, îmbinarea theta este denumită îmbinare interioară.

Unirea theta este cel mai de bază tip JOIN. Acesta va returna toate rândurile din tabelele în care este îndeplinită condiția JOIN.

Sintaxă:

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

Luați în considerare următoarele tabele ale bazei de date Demo:

Carte:

Preț:

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

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Aceasta va returna următoarele:

Doar 3 rânduri au îndeplinit condiția de asociere.

EQUI Alătură-te

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

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

Aceasta va returna următoarele:

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

Alăturați-vă natural

Acest tip de înscriere ne oferă un alt mod de a scrie o înscriere EQUI. Ne putem îmbunătăți exemplul anterior adăugând cuvântul cheie NATURAL așa cum se arată mai jos:

SELECT *FROM BookNATURAL JOIN Price;

Aceasta va returna următoarele:

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

Îmbinări exterioare

Există trei tipuri de JOIN-uri externe în PostgreSQL:

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

ÎNREGISTRARE ÎN EXTERIOR

ÎNCĂLCAREA ÎN EXTERIOR va întoarce toate rândurile din tabelul din partea stângă și numai rândurile din tabelul din partea dreaptă unde condiția de asociere a fost îndeplinită.

Sintaxă:

SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON 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.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Aceasta returnează următoarele:

Toate cele 4 rânduri din tabelul Book au fost returnate. Doar 3 rânduri din tabelul Preț au îndeplinit condiția de asociere. De aceea au fost returnați. Ultima carte nu are valoare de preț corespunzătoare.

ÎNREGISTRAȚI-VĂ ÎN DREAPTA

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

Sintaxă:

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

De exemplu:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Aceasta returnează următoarele:

Toate rândurile din tabelul Prețuri au fost returnate. Au fost returnate numai rândurile din tabelul Carte care îndeplineau condiția de asociere. Al treilea rând nu are valoare pentru nume, deoarece nu a fost găsită nicio potrivire.

Alăturare completă exterioară

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

Sintaxă:

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

De exemplu:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Aceasta returnează următoarele:

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ă:

Alăturări interioare

Theta Join

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

EQUI Alătură-te

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

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

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

Alăturați-vă natural

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

SELECT *FROM BookNATURAL JOIN Price;

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

INNER JOIN (unire simplă)

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

Îmbinări exterioare

ÎNREGISTRARE ÎN EXTERIOR

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

ÎNREGISTRAȚI-VĂ ÎN DREAPTA

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

Alăturare completă exterioară

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

Pasul 2)

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

Pasul 3) Tastați interogarea în editorul de interogări:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Pasul 4) Faceți clic pe butonul Executare.

Ar trebui să returneze următoarele:

Rezumat:

  • În PostgreSQL, folosim JOIN-uri atunci când trebuie să preluăm valori din mai multe tabele.
  • INNER JOIN este cel mai de bază tip de JOIN. Returnează toate înregistrările în care condiția JOIN specificată a fost îndeplinită.
  • STÂNGA EXTERNĂ ÎNCHEIE 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 care condiția de asociere nu este îndeplinită.

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