Daugiau
SQL JOIN ir skirtingų tipų JOIN
Kas yra SQL JOIN
ir kokie yra skirtingi tipai?
236
3
Kas yra SQL JOIN
ir kokie yra skirtingi tipai?
Iliustracija iš W3schools:
.
.
.
Kas yra
SQL JOIN
?SQL JOIN
- tai metodas duomenims iš dviejų ar daugiau duomenų bazės lentelių gauti.Kokie yra skirtingi
SQL JOIN
?Iš viso yra penki
JOIN
. Tai :JOIN arba INNER JOIN :
Atliekant tokį
JOIN
, gauname visus įrašus, atitinkančius sąlygą abiejose lentelėse, o įrašai abiejose lentelėse, kurie nesutampa, nepateikiami.Kitaip tariant,
INNER JOIN
remiasi vieninteliu faktu, kad: TIK atitinkantys abiejų lentelių įrašai TURI būti išvardyti.Atkreipkite dėmesį, kad
JOIN
be jokių kitųJOIN
raktažodžių (pvz.,INNER
,OUTER
,LEFT
ir t. t.) yraINNER JOIN
. Kitaip tariant,JOIN
yra sintaksinis cukrus, skirtasINNER JOIN
(žr. https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).OUTER JOIN :
OUTER JOIN
surenkaarba, suderintas eilutes iš vienos lentelės ir visas kitos lentelės eilutes arba, visas visų lentelių eilutes (nesvarbu, ar jos sutampa, ar ne).
Yra trys išorinio sujungimo rūšys :
2.1 LEFT OUTER JOIN arba LEFT JOIN
Šis sujungimas grąžina visas eilutes iš kairės lentelės kartu su atitinkančiomis eilutėmis iš kairės lentelės. dešiniosios lentelės eilutėmis. Jei dešiniojoje lentelėje nėra sutampančių stulpelių, grąžinamos
NULL
reikšmės.2.2 RIGHT OUTER JOIN arba RIGHT JOIN
Šis
JOIN
grąžina visas dešiniosios lentelės eilutes kartu su atitinkančiomis eilutėmis iš kairėje lentelėje. Jei kairėje lentelėje nėra sutampančių stulpelių, grąžinamosNULL
reikšmės.2.3 FULL OUTER JOIN arba FULL JOIN
Šis sujungimas sujungia
LEFT OUTER JOIN
irRIGHT OUTER JOIN
. Jis grąžina eilutes iš abiejų lentelių, kai tenkinamos sąlygos, ir grąžinaNULL
reikšmę, kai nėra atitikimo.Kitaip tariant,
OUTER JOIN
remiasi tuo, kad: TIK sutampantys įrašai vienoje iš lentelių (dešinėje arba kairėje) arba abiejose lentelėse (PILNA) TURI būti išvardyti.NATURAL JOIN :
Jis grindžiamas dviem sąlygomis :
JOIN
atliekamas visiems to paties pavadinimo stulpeliams, siekiant lygybės.Atrodo, kad tai yra daugiau teorinio pobūdžio ir dėl to (tikriausiai) dauguma DBVS net nesivargina to palaikyti.
CROSS JOIN :
Tai dviejų susijusių lentelių Dekarto sandauga.
CROSS JOIN
rezultatas neturės prasmės daugumoje situacijų. Be to, mums to visai nereikės (tiksliau, mažiausiai reikės).SELF JOIN :
Tai nėra kitokia
JOIN
forma, greičiau tai yra lentelėsJOIN
(INNER
,OUTER
ir t. t.) prijungimas prie savęs.JOIN pagal operatorius
Priklausomai nuo operatoriaus, naudojamo
JOIN
sąlygoje, gali būti dviejų tipųJOIN
. TaiEqui JOIN
Theta JOIN
Equi JOIN :
Bet kokio tipo
JOIN
(INNER
,OUTER
ir t. t.), jei naudojame TIK lygybės operatorių (=), sakome, kadJOIN
yraEQUI JOIN
.Theta JOIN :
Tai tas pats kaip
EQUI JOIN
, tačiau leidžia naudoti visus kitus operatorius, tokius kaip >, = ir t. t.Daugelis mano, kad tiek
EQUI JOIN
, tiek ThetaJOIN
yra panašūs įINNER
,OUTER
.Apibrėžimas:
Sujungimai - tai būdas vienu metu pateikti užklausą iš kelių lentelių sujungtiems duomenims.
JOINS tipai:
RDBMS yra 5 jungčių tipai:
Lygiareikšmė jungtis: sujungia bendrus dviejų lentelių įrašus pagal lygybės sąlygą. Techniškai sujungimas atliekamas naudojant lygybės operatorių (=) vienos lentelės pirminio rakto ir kitos lentelės užsienio rakto reikšmėms palyginti, todėl rezultatų aibę sudaro bendri (suderinti) įrašai iš abiejų lentelių. Apie įgyvendinimą žr. INNER-JOIN.
Natural-Join: Tai patobulinta Equi-Join versija, kurioje SELECT operacija praleidžia dubliuojantį stulpelį. Apie įgyvendinimą žr. INNER-JOIN
Nevienodas sujungimas: Tai atvirkštinis lygiaverčio sujungimo variantas, kai sujungimo sąlygai naudojamas kitas nei lygybės operatorius (=), pvz., !=, =, >, < arba BETWEEN ir t. t. Apie įgyvendinimą žr. INNER-JOIN.
Self-Join:: Tai paprastai reikalinga užklausoms, susijusioms su savireferentinėmis lentelėmis (arba unarinio ryšio esybe). Apie įgyvendinimą žr. INNER-JOIN.
Karteso sandauga: Tai kryžminis visų abiejų lentelių įrašų sujungimas be jokių sąlygų. Techniškai jis grąžina užklausos rezultatų rinkinį be WHERE sąlygos.
Pagal SQL rūpestį ir pažangą, yra 3 sujungimų tipai ir visi RDBMS sujungimai gali būti atliekami naudojant šiuos sujungimo tipus.
VIENAS SUJUNGIMAS: Jis sujungia (arba sujungia) suderintas eilutes iš dviejų lentelių. Sutapatinimas atliekamas remiantis bendrais lentelių stulpeliais ir jų palyginimo operacija. Jei remiamasi lygybės sąlyga, tada: Atliekamas lygybės sujungimas, priešingu atveju - ne lygybės sujungimas.
OUTER-JOIN: Sujungiamos (arba sujungiamos) suderintos dviejų lentelių eilutės ir nesuderintos eilutės su NULL reikšmėmis. Tačiau gali pritaikyti nesuderintų eilučių atranką, pvz., nesuderintas eilutes iš pirmosios lentelės arba antrosios lentelės atrinkti pagal potipius: Kairysis išorinis sujungimas ir dešinysis išorinis sujungimas.
2.1. LIETUVOS IŠORINIS SUJUNGIMAS (dar žinomas kaip LEFT-JOIN): Grąžinamos suderintos eilutės iš dviejų lentelių ir nesuderintos tik iš LEFT lentelės (t. y. pirmosios lentelės).
2.2. Dešinysis išorinis sujungimas (dar žinomas kaip RIGHT-JOIN): Grąžinamos suderintos eilutės iš dviejų lentelių ir nesuderintos tik iš dešiniosios lentelės.
2.3. PILNASIS IŠORINIS SUJUNGIMAS (dar žinomas kaip OUTER JOIN): Grąžinamos suderintos ir nesuderintos eilutės iš abiejų lentelių.
CROSS-JOIN: Šis sujungimas nesujungia ir (arba) nesujungia, o atlieka Dekarto sandaugą.
![čia įveskite paveikslėlio aprašymą][1] Pastaba: Savarankišką sujungimą galima atlikti naudojant INNER-JOIN, OUTER-JOIN ir CROSS-JOIN, atsižvelgiant į reikalavimus, tačiau lentelė turi būti sujungta su pačia savimi.
[Daugiau informacijos:][2]
Pavyzdžiai:
1.1: INNER-JOIN: lygiareikšmio sujungimo įgyvendinimas
1.2: INNER-JOIN: natūralaus jungimo įgyvendinimas
1.3: INNER-JOIN su NON-Equi-join įgyvendinimu