SQL JOIN ir skirtingų tipų JOIN

Kas yra SQL JOIN ir kokie yra skirtingi tipai?

Iliustracija iš W3schools:



.


.


.


Komentarai (18)
Sprendimas

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 :

  1. JOIN or INNER JOIN
  2. OUTER JOIN

     2.1 LEFT OUTER JOIN or LEFT JOIN
     2.2 RIGHT OUTER JOIN or RIGHT JOIN
     2.3 FULL OUTER JOIN or FULL JOIN

  3. NATURAL JOIN
  4. CROSS JOIN
  5. SELF JOIN
  1. 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.) yra INNER JOIN. Kitaip tariant, JOIN yra sintaksinis cukrus, skirtas INNER JOIN (žr. https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).

  1. OUTER JOIN :

OUTER JOIN surenka

arba, 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ąžinamos NULL reikšmės.

2.3 FULL OUTER JOIN arba FULL JOIN

Šis sujungimas sujungia LEFT OUTER JOIN ir RIGHT OUTER JOIN. Jis grąžina eilutes iš abiejų lentelių, kai tenkinamos sąlygos, ir grąžina NULL 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.

Note that `OUTER JOIN` is a loosened form of `INNER JOIN`.
  1. NATURAL JOIN :

Jis grindžiamas dviem sąlygomis :

  1. JOIN atliekamas visiems to paties pavadinimo stulpeliams, siekiant lygybės.
  2. Iš rezultato pašalinami besidubliuojantys stulpeliai.

Atrodo, kad tai yra daugiau teorinio pobūdžio ir dėl to (tikriausiai) dauguma DBVS net nesivargina to palaikyti.

  1. 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).

  1. SELF JOIN :

Tai nėra kitokia JOIN forma, greičiau tai yra lentelės JOIN (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. Tai

  1. Equi JOIN

  2. Theta JOIN

  3. Equi JOIN :

Bet kokio tipo JOIN (INNER, OUTER ir t. t.), jei naudojame TIK lygybės operatorių (=), sakome, kad JOIN yra EQUI JOIN.

  1. 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 Theta JOIN yra panašūs į INNER, OUTER.

ir t. t. JOIN. Tačiau aš tvirtai tikiu, kad tai yra klaida ir daro idėjos neaiškios. Nes INNER JOIN, OUTER JOIN ir t. t. yra susiję su lentelėmis ir jų duomenimis, o EQUI JOIN ir THETA JOIN yra tik yra susiję su operatoriais, kuriuos naudojame pirmajame junginyje.

Vėlgi, yra daug manančių, kad NATURAL JOIN yra tam tikras "savotišką" EQUI JOIN. Iš tikrųjų tai tiesa, nes pirmoji sąlygos, kurią paminėjau NATURAL JOIN. Tačiau mes neprivalome apsiriboti vien tik NATURAL JOIN. INNER JOINs, OUTER JOINs ir t. t. taip pat gali būti EQUI JOIN.

Komentarai (3)

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.

  1. 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.

  2. 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ų.

  3. 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

SELECT  *
FROM Table1 A 
 INNER JOIN Table2 B ON A. =B.;

1.2: INNER-JOIN: natūralaus jungimo įgyvendinimas

Select A.*, B.Col1, B.Col2          --But no B.ForeignKeyColumn in Select
 FROM Table1 A
 INNER JOIN Table2 B On A.Pk = B.Fk;

1.3: INNER-JOIN su NON-Equi-join įgyvendinimu


Select *
 FROM Table1 A INNER JOIN Table2 B On A.Pk 
Komentarai (2)