LIITTYMISET SQL Serverissä: Tyypit esimerkkeineen

⚡ Älykäs yhteenveto

SQL Serverin JOIN-liitokset yhdistävät kahden tai useamman taulukon rivejä toisiinsa liittyvän sarakkeen perusteella käyttämällä INNER-, LEFT OUTER-, RIGHT OUTER- ja FULL OUTER -liitoksia hallitakseen, mitkä vastaavat ja mitkä eivät ole vastaavat rivit näkyvät tuloksessa.

  • 🔗 Tarkoitus: JOIN-operaatio hakee toisiinsa liittyviä tietoja kahdesta tai useammasta taulukosta yhdistämällä ne yhteiseen sarakkeeseen, yleensä avainseen.
  • 🎯 SISÄLIITTYMÄ: INNER JOIN palauttaa vain ne rivit, joilla liitosehto on tosi molemmissa taulukoissa.
  • ⬅️ VASEN ULKOLIITOS: LEFT OUTER JOIN palauttaa vasemmanpuoleisen taulukon jokaisen rivin ja täyttää oikeanpuoleisen taulukon täsmäämättömät sarakkeet NULL-arvolla.
  • ➡️ OIKEA ULKOLIITOS: RIGHT OUTER JOIN palauttaa jokaisen rivin oikeanpuoleisesta taulukosta ja täyttää vasemmanpuoleisen taulukon täsmäämättömät sarakkeet NULL-arvolla.
  • 🔄 TÄYDELLINEN ULKOLIITTYMINEN: FULL OUTER JOIN palauttaa kaikki rivit molemmista taulukoista ja käyttää NULL-arvoa aina, kun ehtoa ei täytetä.
  • 🔑 PÄÄLLÄ-ehto: ON-lauseke nimeää taulukoita yhdistävät sarakkeet, useimmiten ensisijaisen avaimen ja viiteavaimen parin.

SQL Serverin LIITTYMISET: Esimerkkejä SISÄ-, VASEN-, OIKEA- ja TÄYSI ULKOLIITTYMISESTÄ

Mitä ovat liitokset SQL Serverissä?

Dataa voidaan hakea useammasta kuin yhdestä taulukosta käyttämällä JOIN-lauseketta SQL ServerJOIN-operaatio yhdistää kahden tai useamman taulukon rivit niiden välisen toisiinsa liittyvän sarakkeen perusteella, useimmiten sarakkeen ensisijainen avain sovitettu yhteen vieraan avaimenSQL Serverissä on pääasiassa neljää erityyppistä JOIN-tyyppiä:

  • SISÄLIITOS / yksinkertainen liitos
  • VASEN ULKOLIITOS / VASENLIITOS
  • OIKEA ULKOLIITOS / OIKEA LIITOS
  • TÄYDELLINEN ULKOLIITTYMINEN

Alla oleva taulukko yhteenvetää, mitkä rivit kukin JOIN-tyyppi palauttaa:

LIITTYMISEN tyyppi Palautetut rivit
INNER JOIN Vain rivit, joiden liitosehto täsmää molemmissa taulukoissa.
LEFT OUTTER JOIN Kaikki vasemmanpuoleisen taulukon rivit sekä vastaavat oikeanpuoleisen taulukon rivit (NULL-arvot, jos mikään ei vastaa toisiaan).
OIKEA ULKOLIITTYMINEN Kaikki oikeanpuoleisen taulukon rivit sekä vastaavat vasemmanpuoleisen taulukon rivit (NULL-arvot, joissa ei ole vastaavaa arvoa).
TÄYDELLINEN ULKOLIITTYMINEN Kaikki rivit molemmista taulukoista, ja NULL-arvot aina, kun ehtoa ei täytetä.

Alla olevissa esimerkeissä käytetään kahta pöydät, Opiskelijat ja Maksullinen, yhdistettynä yhteiseen pääsykoesarakkeeseensa. Jokaisessa osiossa selitetään yksi JOIN-tyyppi syntakseineen, toimiva kysely ja tulos.

INNER JOIN

Tämän tyyppinen SQL Server JOIN palauttaa rivit kaikista taulukoista, joissa liitosehto on tosi. Se käyttää seuraavaa syntaksia:

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

Käytämme seuraavia kahta taulukkoa havainnollistamaan tätä. Alla olevassa Opiskelijat-taulukossa luetellaan jokainen opiskelija ja hänen hyväksymisnumeronsa:

Opiskelijat-taulukko, jossa luetellaan pääsy-, etunimi- ja sukunimi-sarakkeet

Alla olevasta maksutaulukosta ilmenee kunkin opiskelijanumeron maksama summa:

Maksutaulukko, jossa luetellaan pääsymaksut ja amount_paid-sarake

Seuraava komento havainnollistaa INNER JOIN -käskyä SQL Serverissä esimerkin avulla:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

Komento palauttaa seuraavan tuloksen, jossa näkyvät vain molemmissa taulukoissa olevat pääsynumerot:

INNER JOIN -tulos näyttää vain opiskelijat, joiden valinta näkyy molemmissa taulukoissa

Näemme, mitkä opiskelijat ovat maksaneet maksunsa. Käytimme molemmissa taulukoissa yhteisten arvojen saraketta, joka on pääsykoe-sarake.

LEFT OUTTER JOIN

Tämän tyyppinen liitos palauttaa kaikki vasemmanpuoleisen taulukon rivit sekä oikeanpuoleisen taulukon tietueet, joilla on vastaavat arvot. Esimerkiksi:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

Koodi palauttaa seuraavan tuloksen, keeping jokainen opiskelija, vaikka maksutietoja ei olisikaan merkitty oikein:

VASEN ULKOLIITOS tulos keeping jokainen opiskelija riitelee NULL-arvolla vertaansa vailla olevista maksuista

Tietueet, joissa ei ole vastaavia arvoja, korvataan vastaavissa sarakkeissa NULL-arvoilla.

OIKEA ULKOLIITTYMINEN

Tämäntyyppinen liitos palauttaa kaikki rivit oikeanpuoleisesta taulukosta ja vain ne, joilla on vastaavat arvot vasemmassa taulukossa. Esimerkiksi:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

SQL Serverin OUTER JOINS -lauseke palauttaa seuraavan tuloksen:

OIKEA ULKOLIITOS tulos keeping jokainen maksurivi ja vastaavat opiskelijarivit

Syy yllä olevaan tulokseen on se, että kaikki Palkkiotaulukon rivit ovat käytettävissä Opiskelijat-taulukossa, kun ne vastaavat pääsysarakkeeseen.

TÄYDELLINEN ULKOLIITTYMINEN

Tämän tyyppinen liitos palauttaa kaikki rivit molemmista taulukoista ja NULL-arvoilla aina, kun JOIN-ehto ei ole tosi. Esimerkiksi:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

Koodi palauttaa seuraavan tuloksen FULL OUTER JOIN -kyselyille kohdassa SQL, yhdistämällä jokaisen rivin molemmista taulukoista:

FULL OUTER JOIN -funktio yhdistää kaikki opiskelijat ja maksurivit NULL-arvoilla aukkojen poistamiseksi.

UKK

CROSS JOIN palauttaa kahden taulukon karteesisen tulon, yhdistäen ensimmäisen taulukon jokaisen rivin toisen taulukon jokaisen rivin kanssa. Sillä ei ole ON-ehtoa, joten 10-rivinen ja 5-rivinen taulukko tuottaa 50 riviä.

Käytät SELF JOIN -menetelmää: taulukko listataan kahdesti eri aliaksilla ja sitten yhdistetään toisiinsa liittyvän sarakkeen perusteella, jotta saman taulukon rivejä voidaan vertailla. Tämä on yleistä hierarkkisessa datassa, kuten esimerkiksi kunkin työntekijän yhdistämisessä esimieheensä.

JOIN-kysely yhdistää toisiinsa liittyvien taulukoiden sarakkeet vierekkäin ja yhdistää rivejä tietyllä ehdolla. UNION-kysely pinoaa kahden SELECT-kyselyn tulokset pystysuunnassa lisäämällä rivejä. JOIN leventää tulosta ja UNION pidentää sitä.

Kyllä. ON-lauseke voi testata useita JA-operaattorilla yhdistettyjä sarakkeita, esimerkiksi ON a.col1 = b.col1 AND a.col2 = b.col2. Yhdistelmäehdot ovat yleisiä, kun yksi sarake ei yksilöi riviä.

ON-lauseke määrittää, miten taulukot yhdistetään, ja sitä käytetään liitoksen suorittamisen aikana. WHERE-lauseke suodattaa yhdistetyn tuloksen jälkikäteen. OUTER JOIN -liitoksissa ehdon siirtäminen niiden välillä voi muuttaa palautettuja rivejä.

Kyllä. JOIN-lauseen kirjoittaminen ilman etuliitettä palauttaa oletusarvoisesti INNER JOIN -lauseen, joten se palauttaa vain vastaavat rivit. LEFT-, RIGHT- tai FULL-lauseen lisääminen ennen OUTER JOIN -lausetta muuttaa sitä, mitkä ei-vastaavat rivit säilytetään tuloksessa.

Kyllä. GitHub Copilot voi luonnoskielisestä kehotteesta luoda INNER-, LEFT-, RIGHT- ja FULL OUTER JOIN -kyselyitä. Tarkista aina ON-ehto ja liitoksen tyyppi, jotta tulosjoukko vastaa tarkoittamaasi.

Tekoäly ja koneoppimisen avustajat ehdottavat oikeaa liitostyyppiä, luovat usean taulukon päälle-ehtoja ja merkitsevät puuttuvat avaimet tai vahingossa saadut karteesiset tulot. Ne voivat myös suositella indeksejä liitossarakkeille. Kehittäjä tarkistaa jokaisen ehdotuksen ennen sen suorittamista.

Tiivistä tämä viesti seuraavasti: