SQL Serveri LIITUMISED: tüübid koos näidetega

⚡ Nutikas kokkuvõte

SQL Serveri liitmised ühendavad kahe või enama tabeli ridu seotud veeru põhjal, kasutades liitmisi INNER, LEFT OUTER, RIGHT OUTER ja FULL OUTER, et kontrollida, millised vastavad ja millised mittevastavad read tulemuses kuvatakse.

  • 🔗 Eesmärk: JOIN hankib kahest või enamast tabelist seotud andmeid, sobitades ühise veeru, tavaliselt võtme.
  • 🎯 SISEMINE LIITUMINE: Funktsioon INNER JOIN tagastab ainult need read, mille puhul mõlema tabeli liitmistingimus on tõene.
  • ⬅️ VASAK VÄLIMINE ÜHENDUS: LEFT OUTER JOIN tagastab vasakpoolse tabeli kõik read, täites parempoolse tabeli vasteta veerud NULL-iga.
  • ➡️ PAREM VÄLIMINE LIITUMIST: RIGHT OUTER JOIN tagastab iga rea ​​parempoolsest tabelist, täites vasakpoolse tabeli vasteta veerud NULL-iga.
  • 🔄 TÄIELIK VÄLILINE LIITUMINE: FULL OUTER JOIN tagastab kõik read mõlemast tabelist, kasutades NULL-i kõikjal, kus tingimus ei ole täidetud.
  • 🔑 SEES olekus: ON-klausel nimetab tabeleid ühendavad veerud, enamasti primaar- ja võõrvõtme paari.

SQL Serveri LIITUMISED: näited SISEMISEST, VASAKUST, PAREMAST ja TÄIELIKUST VÄLISEST LIITUMISEST

Mis on SQL Serveri liitumised?

Andmeid saab hankida mitmest tabelist, kasutades JOIN-lauset SQL ServerJOIN ühendab kahe või enama tabeli ridu nendevahelise seotud veeru põhjal, enamasti veeru esmane võti sobitatud a-ga võõras võtiSQL Serveris on peamiselt nelja tüüpi JOIN-e:

  • SISEMINE LIITUMINE / lihtne liitmine
  • VASAK VÄLIMINE ÜHENDUS / VASAK ÜHENDUS
  • PAREM VÄLIMINE LIITUMINE / PAREM LIITUMINE
  • TÄIELIK VÄLILINE LIITUMINE

Allolev tabel võtab kokku, milliseid ridu iga JOIN tüüp tagastab:

LIITUMISE tüüp Tagastatud read
INNER JOIN Ainult read, mille liitmistingimus mõlemas tabelis ühtib.
VASAKU VÄLIMISE LIITUMINE Kõik vasakpoolse tabeli read ja vastavad parempoolse tabeli read (NULL-id, kus ükski ei vasta).
PAREM VÄLILINE LIITUMINE Kõik parempoolse tabeli read ja vastavad vasakpoolse tabeli read (NULL-id, kus ükski ei vasta).
TÄIELIK VÄLILINE LIITUMINE Kõik read mõlemast tabelist, NULL-väärtustega kõikjal, kus tingimus ei ole täidetud.

Allolevates näidetes kasutatakse kahte tabelid, Õpilased ja Tasuline, liideti ühise vastuvõtuveeruga. Igas jaotises selgitatakse ühte JOIN-tüüpi koos selle süntaksi, toimiva päringu ja tulemusega.

INNER JOIN

Seda tüüpi SQL Server JOIN tagastab read kõigist tabelitest, mille puhul liitmistingimus on tõene. See kasutab järgmist süntaksit:

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

Selle demonstreerimiseks kasutame järgmisi kahte tabelit. Allolev õpilaste tabel loetleb iga õpilase ja vastuvõtunumbri:

Õpilaste tabel, kus on loetletud vastuvõtu, eesnime ja perekonnanime veerud

Allolev tasude tabel näitab iga vastuvõtunumbri tasutud summat:

Tasude tabel, kus on loetletud sisseastumisnumbrid ja veerg „Amount_paid”

Järgmine käsk demonstreerib SQL Serveris toimimist INNER JOIN näite abil:

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

Käsk tagastab järgmise tulemuse, näidates ainult mõlemas tabelis olevaid vastuvõtunumbreid:

INNER JOIN tulemus näitab ainult neid tudengeid, kelle vastuvõtt on mõlemas tabelis.

Me näeme, millised tudengid on oma õppemaksu tasunud. Kasutasime mõlema tabeli ühiste väärtustega veergu, mis on vastuvõtu veerg.

VASAKU VÄLIMISE LIITUMINE

Seda tüüpi ühendus tagastab kõik vasakpoolse tabeli read ja parempoolse tabeli kirjed vastavate väärtustega. Näiteks:

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

Kood tagastab järgmise tulemuse: keeping iga õpilane, isegi kui tasuandmed ei ühti:

VASAK VÄLIMINE LIITUMISE tulemus keeping iga tudeng vaidleb NULL-iga, et saada võrratuid tasusid

Vastavate väärtusteta kirjed asendatakse vastavates veergudes NULL-idega.

PAREM VÄLILINE LIITUMINE

Seda tüüpi liitmine tagastab kõik parempoolse tabeli read ja ainult need, mille väärtused vastavad vasakpoolses tabelis. Näiteks:

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

SQL Serveri OUTER JOINS'i lause tagastab järgmise tulemuse:

PAREM VÄLIMINE LIITUMISE tulemus keeping iga tasu rida ja vastavad õpilaste read

Ülaltoodud väljundi põhjuseks on see, et kõik tasude tabeli read on tabelis Õpilased saadaval, kui need on vastavuses vastuvõtu veerus.

TÄIELIK VÄLILINE LIITUMINE

Seda tüüpi ühendus tagastab kõik read mõlemast tabelist, kusjuures NULL-väärtused antakse seal, kus JOIN-tingimus ei ole tõene. Näiteks:

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

Kood tagastab FULL OUTER JOIN päringute puhul järgmise tulemuse SQL, kombineerides iga rea ​​mõlemast tabelist:

TÄIELIK VÄLINE LIITMINE annab tulemuseks kõigi õpilaste ja tasu ridade ühendamise, kus lüngad on NULL-väärtusega.

KKK

RISTLIITMINE tagastab kahe tabeli Cartesiuse korrutise, sidudes esimese tabeli iga rea ​​teise tabeli iga reaga. Sellel puudub SISSE-tingimus, seega 10-realine ja 5-realine tabel annab 50 rida.

Kasutate ISELIITUMIST: tabel loetletakse kaks korda erinevate aliastega ja seejärel ühendatakse seotud veeru alusel, et võrrelda sama tabeli ridu. See on tavaline hierarhiliste andmete puhul, näiteks iga töötaja sobitamine tema juhiga.

JOIN ühendab seotud tabelite veerud kõrvuti, sobitades ridu teatud tingimusel. UNION virnastab kahe SELECT-päringu tulemused vertikaalselt, lisades ridu. JOIN laiendab tulemust; UNION pikendab seda.

Jah. ON-klausel saab testida mitut JA-klausliga ühendatud veergu, näiteks ON a.col1 = b.col1 AND a.col2 = b.col2. Liittingimused on tavalised, kui üks veerg ei identifitseeri rida üheselt.

ON-klausel määrab, kuidas tabeleid sobitatakse ja seda rakendatakse liitumise ajal. WHERE-klausel filtreerib kombineeritud tulemuse hiljem. VÄLISTE LIITMISTE puhul võib tingimuse liigutamine nende vahel muuta tagastatud ridu.

Jah. JOIN-i kirjutamine ilma eesliiteta annab vaikimisi tulemuseks INNER JOIN-i, seega tagastatakse ainult vastavad read. LEFT, RIGHT või FULL lisamine enne OUTER JOIN-i muudab, millised mittevastavad read tulemuses alles jäävad.

Jah. GitHubi koopia saab loomulikus keeles käsurealt koostada INNER, LEFT, RIGHT ja FULL OUTER JOIN päringuid. Kontrollige alati ON tingimust ja liitumistüüpi, et tulemuste komplekt vastaks teie soovile.

Tehisintellekt ja masinõppe assistendid pakuvad välja õige liitmistüübi, genereerivad mitme tabeli sisselülitustingimusi ning märgistavad puuduvad võtmed või kogemata Cartesiuse korrutised. Samuti saavad nad soovitada liitmisveergude indekseid. Arendaja kontrollib iga soovitust enne selle käivitamist.

Võta see postitus kokku järgmiselt: