Rekomenduojama, 2024

Redaktoriaus Pasirinkimas

Skirtumas tarp kairiojo, dešiniojo ir pilno išorinio prisijungimo

Anksčiau mes aptarėme vidinio prisijungimo ir išorinio prisijungimo skirtumus, kuriuose apžvelgėme „Outer Join“ tipus. „Outer Join“ yra tas, kuris išsaugo rezultatą, kuris būtų prarastas prisijungus prie operacijos. Šiame straipsnyje; mes aptarsime skirtumus tarp „Outer Join“ tipų. Yra trys išorinio prisijungimo tipai; Kairė išorinė jungtis, dešinė išorinė jungtis ir pilna išorinė jungtis. Kairė, dešinė ir pilna išorinė sąjunga skiriasi vykdymo planu ir gautais rezultatais. Mes galime praleisti išorinį žodį iš kairės, dešinės ir pilnos išorinės sąjungos. Išnagrinėkime skirtumus tarp kairiojo, dešiniojo ir pilno išorinio prisijungimo, naudodami toliau pateiktą palyginimo lentelę.

Palyginimo diagrama

Palyginimo pagrindasKairė išorinė jungtisDešinė išorinė jungtisPilnas išorinis prisijungimas
PagrindinisVisi kairiosios lentelės rinkiniai lieka rezultate.Visi dešiniojo stalo numeriai lieka rezultate.Visi kairėje ir dešinėje lentelėse esantys rinkiniai lieka rezultate.
NULL pratęsimasKairiojo stalo rinkiniai, kuriuose nėra tinkamos lentelės dešinėje lentelėje, išplečiami NULL reikšme dešiniojo stalo atributams.Kairiojo stalo atributams NULL reikšmė išplečiama dešiniojo lentelės, kurios kairėje lentelėje nėra atitinkamos eilutės, rinkiniai.
Kairių ir dešiniųjų stalų, kurių dešinėje ir kairėje lentelėje nėra atitinkamų paketų, eilutės atitinkamai išplečiamos NULL reikšme dešiniųjų ir kairiųjų lentelių atributams.

Kairiojo išorinio prisijungimo apibrėžimas

Tarkime, mes turime „ Table_A Left Outer Join Table_B “. Taigi „ Table_A“ yra mūsų kairė lentelė, kuri rodoma kairėje pusėje „ Left Outer Join“ ir „ Table_B“ yra mūsų dešinysis stalas.

Iš pradžių vidinė jungtis bus taikoma lentelės_A ir lentelės_B, kurios grąžins visas atitikimo eilutes iš A ir B lentelės.

Po to ji grąžins visas lentelės_A lentelės, kurios neturi atitikmenų lentelės_B lentelėje. Toks rezultatas, kad gautos paketai būtų priklijuoti NULL reikšmėmis dešiniojo stalo atributams.

Taigi, iš kairiojo išorinio prisijungimo gautas rezultatas išlaiko visas eilutes iš kairiojo stalo ir tik atitinkančias eilutes iš dešiniojo stalo.

Aptarkime kairįjį išorinį prisijungimą su pavyzdžiu; Turime dvi lenteles, Studentų lentelę ir Skyriaus lentelę.

Dabar mes taikysime „Left Outer Join“, „Studentų ir katedros“ lentelę.

SELECT * FROM Student LEFT OUTER JOIN departamentas
ON Student. Student_ID = departamentas.Student_ID

Pirmiau pateiktoje užklausoje lentelė „Student“ yra kairysis stalas ir lentelė „Departamentas“ yra teisingas stalas. Taigi, pagal „Left Outer Join“, rezultatas turi turėti visas „Student“ lentelės eilutes ir tik atitinkamas sekcijas iš skyriaus lentelės.

Atkreipkite dėmesį į rezultatus, gautus iš kairiosios išorinės jungties; jame yra visos „Student“ lentelės sekos kartu su atitinkamomis korespondencijomis iš Studentų ir katedros lentelės. Studentų stalo „Jimmy“ studentas Džozefas Haris nebuvo įtrauktas į skyriaus lentelę. Taigi, Jimmy, Joseph Harry departamento stalo atributų reikšmės yra išplėstos iki NULL.

Teisinės išorinės jungties apibrėžimas

Tarkime, mes turime „ Table_A Right Outer Join Table_B “. Taigi Table_A yra mūsų kairė lentelė, kuri rodoma kairėje pusėje „ Right Outer Join“ ir „ Table_B“ yra mūsų dešinysis stalas.

Kaip ir kairiajame išoriniame prisijungime, iš pradžių vidinė jungtis bus taikoma lentelės_A ir lentelės_B, kuri grąžins visus atitikimo numerius iš A ir B lentelės.

Be to, ji grąžins visas lentelės_B eilutes, kurios neturi atitikmenų lentelės_A. Toks rezultatas, kad gautos paketai būtų suformuoti NULL reikšmėmis kairiojo stalo atributams.

Todėl rezultatas, gautas iš dešinės išorinės jungties, išlaiko visas dešiniojo stalo eilutes ir tik atitinkančias eilutes iš kairiojo stalo.

Aptarkime dešinįjį išorinį prisijungimą su pavyzdžiu; aukščiau mes turime dvi lenteles, Studentų lentelę ir skyrių lentelę.

Dabar mes taikysime „ Right Outer Join“ prie „Student“ stalo ir skyriaus stalo.

SELECT * IŠ Studentų TEISĖS UŽSIENIO PRIEMONĖS
ON Student. Student_ID = departamentas.Student_ID

Pirmiau pateiktame užklausoje „Studentų lentelė“ yra mūsų kairiojo stalo lentelė, o departamento lentelė - mūsų dešinysis stalas. Pagal „Right Outer Join“ operaciją rezultatas turi apimti visas sekcijas iš skyriaus lentelės ir tik atitinkančias paketas iš Studentų lentelės.

Stebėkite rezultatą, gautą iš dešinės išorinės jungties; ji turi visas sekcijas iš departamento lentelės kartu su atitinkamomis korespondencijomis iš tiek studentų, tiek skyrių lentelės. Studentų lentelės „Student_ID 10536“ ir „00954“ skyriai „Skyrius“. Taigi, „Name for Student_ID 10536“ ir „00954“ atributo reikšmė išplėsta iki NULL.

„Full Outer“ apibrėžimas

Tarkime, mes turime „ Table_A Full Outer Join Table_B “. Taigi „ Table_A“ yra mūsų kairioji lentelė, kuri rodoma kairėje „Full Outer Join“ operacijoje ir „ Table_B“ yra mūsų dešinysis stalas.

Pilna išorinė jungtis yra abiejų, kairiųjų išorinių jungčių ir dešinės išorinės jungties derinys . Iš pradžių jis taikomas vidiniam prisijungimui prie Table_A ir Table_B, kad gautumėte atitikmenis iš abiejų lentelių. Tada ji išplečia tuos Table_A rinkinius su NULL, kurių lentelės_B atitikmenų nėra. Be to, ji išplečia tuos rinkinius iš lentelės_B su NULL, kurie neturi atitikmenų lentelės_A.

Todėl „Full Outer Join“ išsaugo visas eilutes iš kairiojo ir dešiniojo stalo, kartu su abiejų lentelių atitikmenimis.

Aptarkime FULL Outer Join su pavyzdžiu; mes turime dvi lenteles aukščiau, Studentų lentelę ir skyrių lentelę.

Dabar taikysime „Full Outer Join“ prie „Student“ stalo ir skyriaus lentelės.

SELECT * FROM Student FULL OUTER JOIN departamentas
ON Student. Student_ID = departamentas.Student_ID

Pirmiau pateiktame užklausoje „Studentų lentelė“ yra mūsų kairė lentelė, o departamentų lentelė - mūsų dešinysis stalas. Pasak „Full Outer Join“, rezultatas turi apimti visas lenteles iš abiejų lentelių.

Atkreipkite dėmesį į rezultatus, gautus iš pilnos išorinės jungties; jame yra visos „Student“ ir „Department“ stalo lentelės kartu su atitinkamomis „Student“ ir „Department“ stalo lentelėmis. Jimmy studentas , Joseph Harry, ty atitinkamai 10026, 02256, 56362 Studentų stalo, departamento lentelėje nebuvo. Taigi, Jimmy, Joseph Harry departamento lentelės atributų reikšmės yra išplėstos iki NULL . Studentų lentelės Student_ID stulpelyje nėra Student_ID 10536 ir 00954, departamento lentelės. Taigi, atributo reikšmė, skirta „Name_” 10536 ir 00954, yra išplėsta į „ NULL“ .

Pagrindiniai skirtumai tarp kairiojo, dešiniojo ir pilno išorinio prisijungimo

  1. Kairiojo išorinio prisijungimo rezultatas turi visas kairiojo stalo eilutes. Panašiai ir dešinės išorinės jungties rezultatas turi visas dešiniojo stalo eilutes. Viso išorinio prisijungimo rezultatas turi visas eilutes iš kairiojo ir dešiniojo stalo.
  2. Kairiajame išoriniame prisijungime kairiosios lentelės eilutės, kurių dešinėje lentelėje nėra atitinkamos eilutės, išplečiamos Null reikšmėmis dešiniojo stalo atributams. Priešingai yra dešiniosios išorinės jungties atveju. O „Full Outer Join“, kairiųjų ir dešiniųjų stalų, kurių dešinėje ir kairėje lentelėse nėra atitinkamų paketų, eilutės atitinkamai išplečiamos NULL, atitinkamai, dešiniojo ir kairiojo stalo atributams.

Išvada:

Užtikrinkite lentelės pavadinimų poziciją užklausoje. Kadangi lentelės pavadinimo pozicijoje užklausa nusprendžia, ar lentelė bus laikoma kairiuoju arba dešiniuoju stalu.

Top