Tämä artikkeli tarjoaa täydellisen yleiskatsauksen ja esimerkkejä SQL-ulkoinen liitos, mukaan lukien täydellinen, oikea ja vasen ulompi liitos, sekä kattavat SQL: n vasemman ja oikean ulkoliitoksen välisen liitoksen.
On tärkeää ymmärtää prosessi, jolla tiedot saadaan useilta taulukoita. Aloittelijalla ei ehkä ole ajatusta Liity SQL Server -palvelimesta. Tässä vihjeessä tarkastellaan yleisesti SQL-liittymiä, opitaan SQL OUTER JOIN sekä sen syntaksit, esimerkit ja käyttötapaukset.
Relaatiotietokantajärjestelmässä on parasta noudattaa periaatteita Normalisointi, jossa periaatteessa jaetaan suuret taulukot pienempiin taulukoihin. Select-lauseessa voimme noutaa tiedot näistä taulukoista liitosten avulla. Voimme liittyä taulukoihin ja saada vaaditut kentät näistä taulukoista tulosjoukkoon. Näillä taulukoilla tulisi olla jokin yhteinen kenttä, joka liittyy toisiinsa. Saatat löytää tietoja jaettuna useisiin tietokantoihin, ja joskus se on myös hyvin monimutkainen rakenne. Liittymien avulla voimme yhdistää tiedot useista taulukoista, tietokannoista käyttäjäystävälliseksi ja edustaa näitä tietoja sovelluksessa.
Voimme edustaa SQL JOINia seuraavalla kuvalla
Voimme monia SQL Join -tyyppejä SQL Serverissä. Seuraavassa kuvassa näet SQL-liittymisluokat
Tutkitaan SQL Outer Join -sovelluksen tietoja tulevassa osiossa.
SQL OUTER JOIN -esittely
Käytämme SQL OUTER JOIN -toimintoa taulukoiden välisten rivien sovittamiseen. Voisimme haluta saada ottelurivit yhdessä vertaamattomien rivien kanssa joko yhdestä tai molemmista pöydistä. Meillä on seuraavat kolme tyyppiä SQL OUTER JOINS: a.
- SQL Full Outer Join
- SQL Left Outer Join
- SQL Right Outer Join
Tutkitaan kutakin SQL Outer Join -sovellusta esimerkkien avulla.
SQL Full Outer Join
SQL Full Outer Join -sovelluksessa molempien taulukoiden kaikki rivit sisältyvät . Jos riviä on parittomia, se näyttää NULL-arvot niille.
Ymmärrämme tehokkaasti esimerkkien avulla. Luodaan mallitaulukko ja lisätään siihen tietoja.
Voit viitata molempien taulukoiden seuraavaan tietomalliin.
Lisää tiedot Employee-taulukkoon seuraavalla komentosarjalla.
Lisää tiedot Department-taulukkoon
Voimme edustaa loogista suhdetta kahden taulukon välillä käyttämällä Venn-kaaviota. Venn-kaavio sisältää useita päällekkäisiä ympyröitä ja kukin ympyrä edustaa kokonaisuutta tai taulukkoa. Venn-kaavion yhteinen alue tai päällekkäinen alue edustaa molempien taulukoiden välisiä yhteisiä arvoja.
Esimerkiksi seuraavassa kuvakaappauksessa meillä on kaksi päällekkäistä ympyrää. Jokainen ympyrä pahoittelee taulukkoa (työntekijät ja osastot). Ymmärretään FULL Outer Join seuraavalla esimerkillä.
Meillä on yhteinen kenttä (EmpID) molemmissa taulukoissa; siksi voimme liittyä taulukkoon tällä sarakkeella. Seuraavassa kyselyssä määritimme TÄYDEN ULKOYHTEYDEN osastojen ja työntekijöiden taulukon välillä molempien taulukoiden EMPID-sarakkeessa.
1
2
3
|
VALITSE *
Työntekijä
FULL OUTER JOIN Osastot päällä Employee.EmpID = Departments.EmpID;
|
SQL Full Outer Join antaa seuraavat rivit tulosteessa
- Molempien taulukoiden väliset rivit
- Molempien taulukoiden vastaamattomat rivit (NULL-arvot )
Suoritetaan tämä kysely palauttamaan Full Outer Join -kyselylähtö. Saamme seuraavan tuloksen.
Voimme nähdä myös muutaman NULL-arvon sisältävän tietueen. Ymmärretään tämä paremmin Venn-kaavion avulla.
Seuraavassa kuvakaappauksessa näet seuraavat tiedot
- EmpID 1, 2,3,4,5 , 6,10 on sekä työntekijöiden että osastojen taulukossa. Täydellisen ulkoisen liittymisen kyselylähdössä saamme kaikki nämä rivit molempien taulukoiden tiedoilla.
- EmpID 7, 8, 9 on Employee-taulukossa, mutta ei Department-taulukossa. Se ei sisällä yhtään riviä osastotaulussa; siksi; saamme NULL-arvot näille tietueille
Lisätään nyt demotarkoituksessa vielä yksi tietue Osastot-taulukoihin . Tähän kyselyyn lisätään EmpID 11, jota ei ole Employee-taulukossa.
Suorita SQL Full Outer Join -kysely uudelleen. Seuraavasta kuvasta saat yhden ylimääräisen rivin NULL-arvoilla. Emme ole löytäneet yhtään riviä EmpID 11: lle työntekijätaulukossa.Tästä johtuen saamme sille ulostulosta NULL-arvot.
Yhteenvetona voimme edustaa SQL Full Outer Join -ohjelmaa seuraavan Venn-kaavion avulla. Saamme sen, mitä korostetulla alueella on edustettuna Full Outer Join -ulostulossa.
SQL FULL OUTER JOIN and WHERE -lauseke
Voimme lisätä WHERE-lausekkeen SQL FULL OUTER JOIN -toiminnon avulla, jotta molempien Join-taulukoiden väliin saadaan rivejä, joissa ei ole vastaavia tietoja.
Seuraavassa kyselyssä lisätään a-lauseke näytä vain tietueet, joilla on NULL-arvot.
1
2
3
4
5
|
SELECT *
työntekijältä
FULL OUTER JOIN Osastot päällä Employee.EmpID = Departments.EmpID
WHERE Employee.EmpID ON NULL
TAI Departments.EmpID ON NULL;
|
Suorita tämä komento ja tarkastele tulosta. Se palauttaa vain rivit, jotka eivät vastaa työntekijöiden tai osastojen taulukkoa.
SQL LEFT OUTER JOIN
SQL Left Outer Join -sovelluksessa saamme seuraavat rivit tulosteessamme.
- Se antaa molempien taulukoiden välisen vastaavan rivin tuloksen
- Jos mikään tietue ei täsmää vasemmasta taulukosta se näyttää myös NULL-arvoiset tietueet
Suorita seuraava koodi palauttaaksesi SQL LEFT OUTER JOIN -lähdön
1
2
3
|
VALITSE *
FROM Työntekijä
VASEN ULKOINEN LIITTYMINEN Osastot päällä Työntekijä.EmpID = Osastot.EmpID
|
Seuraavassa kuvassa näet, että meillä on NULL-arvot EmpID 7: lle ja 9: lle. Näitä EmpID: tä ei ole oikealla puolella Osastotaulukko.
Meidän on huomioitava taulukon sijoitusasema Join-käskyssä. Tällä hetkellä vasemmalla puolella on työntekijätaulukko ja oikealla puolella osastotaulukko.
Kirjoitetaan kysely uudelleen ja vaihdetaan taulukoiden sijainti kyselyssä. Tässä kyselyssä osastotaulukko on vasemmalla, joten vasemman ulkoisen liittymisen tulisi tarkistaa tämän taulukon arvot ja palauttaa NULL-arvo ristiriitatapauksissa.
Seuraavassa kuvakaappauksessa voit katso, että vain yksi NULL-arvo EmpID 11: lle. Se johtuu siitä, että EmpID 11 ei ole käytettävissä Työntekijä-taulukossa.
Kuten Yhteenvetona voimme edustaa SQL Left Outer Join -sovellusta seuraavan Venn-kaavion avulla. Saamme korostetun alueen SQL Left Outer Join -ulostuloon.
SQL Right OUTER JOIN
SQL Right Outer Join -sovelluksessa saamme seuraavat rivit tulosteeseemme.
- Se antaa molempien taulukoiden välisen vastaavan rivin tuloksen
- Jos yksikään tietue ei vastaa oikeassa taulukossa, se näyttää myös ne tietueet, joissa on NULL-arvot
Suorita seuraava kysely saadaksesi oikeanpuoleisen liitoksen tulos
1
2
3
|
VALITSE *
FROM työntekijä
OIKEA ULKOINEN LIITTYMINEN Osastot päällä Employee.EmpID = Departments.EmpID
|
Seuraavassa kuvassa näet, että saamme kaikki vastaavat rivit yhdessä yhden rivin kanssa, jossa on NULL-arvot. Null-arvon rivillä on EmpID 11, koska sitä ei ole työntekijätaulukossa. Voit myös huomata, että osastotaulukon sijainti on oikeassa paikassa Liity. Tästä syystä emme saa arvoja Employee-taulukosta (vasen sijainti), joka ei vastaa osastotaulukkoa (oikea puoli).
Kuten aiemmin korostettiin, taulukon sijainti on tärkeä JOIN-käskyssä. Jos muutamme taulukon sijaintia, saadaan erilainen tulos. Seuraavassa kyselyssä meillä on osastotaulukko (vasen) ja työntekijätaulukko (oikea).
1
2
3
4
|
VALITSE *
FROM osastot
OIKEA ULKOINEN LIITTYMINEN Työntekijä ON Departments.EmpID = Employee.EmpID
|
Voit huomata oikeanpuoleisen liittymisen eron, kun olet vaihtanut taulukon sijaintia yllä olevassa kyselyssä.
Yhteenvetona voimme edustaa SQL Right Outer Join -sovellusta seuraavan Venn-kaavion avulla. Saamme korostetun alueen SQL Right Outer Join -ulostulosta.
SQL Left Outer Joinin ja SQL Right Outerin välinen liitos Liity
Aikaisemmissa esimerkeissä tutkimme SQL Vasemman Ulkoisen Liiton ja SQL Oikean Ulkoisen Liittymisen eri esimerkeillä. Voimme tehdä unionin sekä vasemman ja vasemmanpuoleisen liitoksen tuloksista. Se antaa SQL Full Outer Join -tuloksen.
Suorita seuraava kysely vaihtoehtona SQL Full Outer Join -ominaisuudelle.
1
2
3
4
5
6
7
|
SELECT *
työntekijältä
VASEN OUTER JOIN Osastot PÄÄLLÄ Employee.EmpID = Departments.EmpID
UNION ALL
SELECT *
FROM Employee
OIKEA ULKOINEN LIITTYMINEN Osastot ON Employee.EmpID = Departments.EmpID
|
Seuraavassa lähdössä saamme kaikki vastaavat tietueet, poista tietueet vasemmasta taulukosta ja poista tietueet oikeasta taulukosta. Se on samanlainen kuin SQL Full Outer Join -tulos.
Johtopäätös
Tässä artikkelissa tutustuimme SQL Outer Joiniin ja sen tyyppeihin sekä esimerkkeihin. Toivottavasti pidit tästä artikkelista hyödyllistä. Anna palautetta alla olevissa kommenteissa.
- Kirjoittaja
- Viimeisimmät viestit
Hän on luonut yhden suurimmista ilmaisista online-artikkelikokoelmista yhdestä aiheesta, 50-osaisella sarjallaan SQL Server Always On Availability Groups -ryhmissä. Hänen osuutensa perusteella SQL Server -yhteisöön hänet on tunnustettu useilla palkinnoilla, kuten arvostettu ”Vuoden paras kirjailija” jatkuvasti vuosina 2020 ja 2021 SQLShackissa.
Raj on aina kiinnostunut uusista haasteista, joten jos tarvitset konsultointia apua mistä tahansa hänen kirjoituksissaan käsitellystä aiheesta, hän on tavoitettavissa osoitteessa [email protected]
Näytä kaikki käyttäjän Rajendra Gupta viestit
- Istunnon aikakatkaisut SQL Serverissä aina käytettävissä Ryhmät – 8. helmikuuta 2021
- Pienien ja suurten versioiden päivitykset AWS RDS SQL Serverille – 29. tammikuuta 2021
- AWS RDS PostgreSQL -esiintymien käyttöönotto – 27. tammikuuta 2021