PostgreSQL Liitostyypit: Sisäinen, Ulkoinen, Vasen, Oikea

⚡ Älykäs yhteenveto

PostgreSQL Liitokset hakevat ja yhdistävät rivejä kahdesta tai useammasta taulukosta jaetun avaimen avulla. Liitoksiin kuuluvat sisäiset liitokset, kuten theta, EQUI ja natural, sekä ulkoiset liitokset, jotka kattavat vasemman, oikean ja täydelliset tulokset.

  • 🔗 Yhdistää: Yhdistää useiden taulukoiden sarakkeita yhteisen avaimen perusteella.
  • 🎯 Sisäinen liittyminen: Sisäliitokset palauttavat vain rivit, joilla liitosehto täyttyy.
  • ⬅️ Vasen liittyminen: LEFT OUTER JOIN säilyttää kaikki vasemmanpuoleiset taulukon rivit ja lisää NULL-arvoja täsmäämättömille oikeanpuoleisille riveille.
  • ➡️ Oikea liittyminen: RIGHT OUTER JOIN säilyttää kaikki oikeanpuoleiset taulukon rivit ja lisää NULL-arvoja vastaamattomille vasemmanpuoleisille riveille.
  • ???? Täysi liittyminen: FULL OUTER JOIN palauttaa kaikki rivit molemmista taulukoista NULL-arvoilla, jos vastinetta ei ole.
  • 🤖 Tekoälyn apu: Tekoälyavustajat valitsevat oikean liitostyypin ja kirjoittavat ON-ehdon.

PostgreSQL Liittymistyypit

Mitä ovat liittymiset PostgreSQL?

PostgreSQL Liitosten käytetään tiedon hakemiseen useammasta kuin yhdestä taulukosta. Liitosten avulla voimme yhdistää SELECT- ja JOIN-lausekkeet yhdeksi lausekkeeksi. Lausekkeeseen lisätään JOIN-ehto, ja kaikki ehdot täyttävät rivit palautetaan. Eri taulukoiden arvot yhdistetään yhteisten sarakkeiden perusteella. Yhteinen sarake on useimmiten ensimmäisen taulukon ensisijainen avain ja toisen taulukon viiteavain.

PostgreSQL Liittymistyypit

Liittymiä on kahdenlaisia PostgreSQL:

  • Sisäiset liittymät
  • Ulkopuoliset liittymät

PostgreSQL Sisäinen liittyminen

Sisäisiä liitoksia on 3 tyyppiä PostgreSQL:

  • Theta liittyy
  • Luonnollinen liitos
  • EQUI liittyä

Theta Liity

Theta-liitoksen avulla voidaan yhdistää kaksi taulukkoa sen ehdon perusteella, jota theta edustaa. Theta-liitokset voivat toimia kaikkien vertailuoperaattoreiden kanssa. Useimmissa tapauksissa theta-liitosta kutsutaan sisäliitokseksi.

Theta-liitos on JOIN:n yksinkertaisin tyyppi. Se palauttaa kaikki rivit taulukoista, joissa JOIN-ehto täyttyy.

Syntaksi:

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

Harkitse seuraavia Demo-tietokannan taulukoita:

Kirja:

PostgreSQL Theta Liity

Hinta:

PostgreSQL Theta Liity

Haluamme nähdä jokaisen kirjan nimen ja vastaavan hinnan. Voimme suorittaa seuraavan komennon:

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

Tämä palauttaa seuraavat tiedot:

PostgreSQL Theta Liity

Vain 3 riviä täytti liitosehdon.

EQUI Liity

EQUI-liitos tarjoaa meille tavan yhdistää kaksi taulukkoa ensisijaisen avaimen/vieraan avaimen suhteen perusteella. Esimerkiksi:

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

Tämä palauttaa seuraavat tiedot:

PostgreSQL EQUI Liity

Molemmista taulukoista on palautettu tietueita yhteisten sarakkeiden eli id-sarakkeen perusteella.

Luonnollinen liittyminen

Tämäntyyppinen liitos tarjoaa meille toisen tavan kirjoittaa EQUI-liitos. Voimme parantaa edellistä esimerkkiämme lisäämällä LUONNON avainsanan alla olevan kuvan mukaisesti:

SELECT *
FROM Book
NATURAL JOIN Price;

Tämä palauttaa seuraavat tiedot:

PostgreSQL Luonnollinen liittyminen

Vain yksi id-sarake on palautettu. NATURAL JOIN havaitsi, että id-sarake on yhteinen kahdessa taulukossa. Vain yksi palautettiin.

PostgreSQL Ulkopuolinen liittyminen

Ulkoliitoksia on 3 tyyppiä PostgreSQL:

  • Vasen ulompi liittymä
  • Oikea ulompi liitos
  • Täysi ulkoinen liittyminen

PostgreSQL Vasen ulompi liittymä

LEFT OUTTER JOIN palauttaa kaikki taulukon rivit vasemmalla puolella ja vain ne oikeanpuoleisen sivutaulukon rivit, joissa liitosehto on täytetty.

Syntaksi:

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

Meidän on nähtävä jokaisen kirjan nimi ja vastaava hinta. Voimme suorittaa seuraavan komennon:

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

Tämä palauttaa seuraavan:

PostgreSQL Vasen ulompi liittymä

Kaikki Kirja-taulukon 4 riviä on palautettu. Vain 3 riviä Hintataulukosta täytti liitosehdon. Siksi heidät palautettiin. Viimeisellä kirjalla ei ole vastaavaa hinta-arvoa.

PostgreSQL Oikea ulompi liitos

RIGHT OUTER JOIN palauttaa kaikki taulukon rivit oikealla puolella ja rivit taulukon vasemmalla puolella, joissa liitosehto on täytetty.

Syntaksi:

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

Esimerkiksi:

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

Tämä palauttaa seuraavan:

PostgreSQL Oikea ulompi liitos

Kaikki Price-taulukon rivit on palautettu. Vain ne Book-taulukon rivit, jotka täyttivät liitosehdon, palautettiin. Kolmannella rivillä ei ole arvoa name-kentälle, koska osumia ei löytynyt.

Täysi ulkoinen liittyminen PostgreSQL

Tämän tyyppinen JOIN palauttaa kaikki taulukon rivit vasemmalla puolella ja kaikki taulukon rivit oikealla puolella nollapisteineen, joissa liitosehto ei täyty.

Syntaksi:

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

Esimerkiksi:

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

Tämä palauttaa seuraavan:

PostgreSQL Täysi ulkoinen liittyminen

Kaikki rivit kaikista taulukoista on palautettu, ja niissä on nollia, joille ei löytynyt vastaavuutta.

pgAdminin avulla

Yllä olevat tehtävät voidaan suorittaa pgAdminissa seuraavasti. Seuraavissa osioissa käydään läpi jokainen liitostyyppi vaihe vaiheelta.

pgAdminin sisäinen liittyminen

Alla olevat vaiheet näyttävät, miten kutakin sisäisen liitoksen varianttia suoritetaan pgAdminissa.

Thetan käyttäminen Liity mukaan PostgreSQL pgAdminin avulla

Alla on vaiheet Theta Joinin käyttöön PostgreSQL pgAdminin avulla:

Vaihe 1) Kirjaudu pgAdmin-tilillesi

Avaa pgAdmin ja kirjaudu sisään tunnuksillasi

Vaihe 2) Luo esittelytietokanta

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdminin sisäinen liittyminen

Vaihe 3) Kirjoita kysely

Kirjoita alla oleva kysely kyselyeditoriin:

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

Vaihe 4) Suorita kysely

Napsauta Suorita-painiketta

pgAdminin sisäinen liittyminen

Sen pitäisi palauttaa seuraavat tiedot:

pgAdminin sisäinen liittyminen

EQUI Liity

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdmin EQUI Liity

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

pgAdmin EQUI Liity

Sen pitäisi palauttaa seuraavat tiedot:

pgAdmin EQUI Liity

Luonnollinen liittyminen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdmin Luonnollinen Liity

Vaihe 3) Kirjoita kysely kyselyeditoriin:

SELECT *
FROM Book
NATURAL JOIN Price;

Vaihe 4) Napsauta Suorita-painiketta.

pgAdmin Luonnollinen Liity

Sen pitäisi palauttaa seuraavat tiedot:

pgAdmin Luonnollinen Liity

pgAdmin yksinkertainen sisäinen liittyminen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdmin yksinkertainen sisäinen liittyminen

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

pgAdmin yksinkertainen sisäinen liittyminen

Sen pitäisi palauttaa seuraavat tiedot:

pgAdmin yksinkertainen sisäinen liittyminen

pgAdmin Outer Join

Suorita seuraavaksi kolme ulompaa liitosmuunnosta pgAdminissa alla olevien vaiheiden mukaisesti.

Vasen ulompi liittymä

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdmin Left Outer Join

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

pgAdmin Left Outer Join

Sen pitäisi palauttaa seuraavat tiedot:

pgAdmin Left Outer Join

Oikea ulompi liitos

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdmin Oikea ulkoliitos

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

pgAdmin Oikea ulkoliitos

Sen pitäisi palauttaa seuraavat tiedot:

pgAdmin Oikea ulkoliitos

Täysi ulkoinen liittyminen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  • Valitse vasemmalla olevasta navigointipalkista Tietokannat.
  • Napsauta Demo.

pgAdmin Full Outer Join

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

pgAdmin Full Outer Join

Sen pitäisi palauttaa seuraavat tiedot:

pgAdmin Full Outer Join

Lataa tässä opetusohjelmassa käytetty tietokanta

UKK

SISÄLIITOS palauttaa vain vastaavat rivit molemmissa taulukoissa. ULKOLIITOS säilyttää myös vastaamattomat rivit täyttämällä puuttuvat sarakkeet NULL-arvolla, ja se voi olla vasen, oikea tai täysi riippuen siitä, kumpi taulukko säilytetään.

JOIN-operaattori yhdistää eri taulukoiden sarakkeita vierekkäin vastaavan avaimen avulla, leventäen jokaista riviä. UNION-operaattori pinoaa kahden tulosjoukon rivit pystysuunnassa ja vaatii saman määrän sarakkeita.

Itseliitos liittää taulukon itseensä käyttämällä kahta taulukkoaliasta. Se on hyödyllinen yhden taulukon rivien vertailuun, kuten työntekijöiden yhdistämiseen samassa taulukossa tallennettuihin esimiehiin.

CROSS JOIN palauttaa karteesisen tulon, joka yhdistää ensimmäisen taulukon jokaisen rivin toisen taulukon jokaisen rivin kanssa. Se ei käytä ON-ehtoa, joten se voi tuottaa nopeasti erittäin suuria tulosjoukkoja.

Kyllä. Voit ketjuttaa useita JOIN-lausekkeita yhteen kyselyyn lisäämällä jokaiseen ylimääräiseen taulukkoon toisen JOIN- ja ON-ehdon. PostgreSQL arvioi ne muodostaakseen yhden yhdistetyn tulosjoukon.

Tekoälyavustajat, kuten GitHub Copilot, ehdottavat oikeaa liitostyyppiä, kirjoittavat ON-ehdon viiteavaimista ja merkitsevät puuttuvan ehdon, joka voisi aiheuttaa vahingossa karteesisen tulon, mikä vähentää yleisiä liitosvirheitä.

Kyllä. Tekoälyavustajat voivat lukea kyselysuunnitelman, suositella indeksejä liitossarakkeille ja kirjoittaa liitosjärjestyksen tai -ehdot uudelleen. Tietokanta valvoo edelleen oikeellisuutta, joten tarkista jokainen ehdotus ennen sen suorittamista tuotannossa.

Mikään yksittäinen liitos ei ole aina nopein; suorituskyky riippuu indekseistä, rivimääristä ja suodattimista. Indeksoitujen avainten SISÄISET liitokset ovat yleensä tehokkaita, kun taas suurten indeksoimattomien taulukoiden TÄYDELLISET ULKOISET liitokset ovat yleensä kalleimpia.

Tiivistä tämä viesti seuraavasti: