Kujiunga kwa Ndani vs Kujiunga Nje
Kujiunga kwa ndani na Kujiunga kwa Nje ni mbinu mbili za kuunganisha za SQL zinazotumika katika kuchakata hoja za hifadhidata. Wao ni wa familia ya vifungu vya kujiunga (vingine viwili vikiwa Viunga vya Kushoto na Kulia). Walakini, kuna Jiunge na Self ambayo inaweza kutumika kwa hali maalum. Madhumuni ya Jiunge ni kuchanganya sehemu kwa kutumia thamani za kawaida kwenye jedwali hizi mbili. Viungio hivi vinachanganya rekodi kutoka kwa jedwali nyingi kwenye hifadhidata. Huunda seti za matokeo, ambazo zinaweza kuhifadhiwa kama jedwali lingine.
Jiunge la Ndani ni nini?
Operesheni ya SQL Join inayotumika sana ni Inner Join. Inaweza kuzingatiwa kama aina chaguo-msingi ya kujiunga inayotumika katika programu. Uunganisho wa ndani tumia kihusishi cha kuunganisha ili kuchanganya jedwali mbili. Ikizingatiwa kuwa jedwali hizi mbili ni A na B, basi kihusishi cha join kitalinganisha safu za A na B ili kujua jozi zote zinazokidhi kihusishi. Thamani za safu wima za safumlalo zote zilizoridhika za jedwali A na B zimeunganishwa ili kuunda matokeo. Inaweza kuangaliwa kama kwanza kuchukua unganisho la msalaba (bidhaa ya Cartesian) ya rekodi zote na kisha kurudisha rekodi tu zinazokidhi kihusishi cha kujiunga. Walakini, kwa ukweli, bidhaa ya Cartesian haijahesabiwa kwa sababu haifai sana. Kiungio cha heshi au cha kuunganisha kinatumika, badala yake.
Jiunge la Nje ni nini?
Tofauti, Kujiunga kwa ndani, Kujiunga kwa nje kunahifadhi rekodi zote hata kama hakuwezi kupata rekodi inayolingana. Hiyo inamaanisha kujiunga kwa nje kunahitaji rekodi ili kupata rekodi inayolingana ili kuonekana kwenye matokeo. Badala yake, itarudisha rekodi zote, lakini rekodi ambazo hazijalinganishwa zitakuwa na maadili yasiyofaa. Viungio vya nje vimegawanywa katika kategoria tatu ndogo. Zimeachwa kiunganishi cha nje, kiunga cha nje cha kulia na kiungio kamili cha nje. Utofautishaji huu unatokana na safu mlalo ya jedwali lipi (jedwali la kushoto, jedwali la kulia au majedwali yote mawili) inapopatikana rekodi zisizolingana. Viungio vya nje vya kushoto (pia hujulikana kama kiungo cha kushoto) huhifadhi rekodi zote za jedwali la kushoto. Hiyo inamaanisha, hata kama rekodi zinazolingana na nambari ni sifuri, basi itakuwa bado na rekodi kwenye jedwali la matokeo, lakini itakuwa na maadili yasiyofaa kwa safu wima zote za B. Kwa maneno mengine, thamani zote kutoka kwa jedwali la kushoto hurejeshwa zikiwa na thamani zinazolingana kutoka kulia. jedwali (au maadili yasiyofaa wakati hayalinganishwi). Ikiwa thamani kutoka kwa safu mlalo nyingi kutoka kwa jedwali la kushoto zitalinganishwa na safu mlalo moja kutoka kwa jedwali la kulia, safu mlalo kutoka jedwali la kulia itarudiwa inavyohitajika. Uunganisho wa nje wa kulia ni sawa na uunganisho wa nje wa kushoto, lakini matibabu ya jedwali yanaheshimiwa. Hiyo inamaanisha kuwa matokeo yatakuwa na safu mlalo zote za jedwali la kulia angalau mara moja na thamani zinazolingana za jedwali la kushoto (na maadili matupu ya thamani zisizolingana za kulia). Uunganisho kamili wa nje ni wa kina zaidi kuliko viungio vya nje vya kushoto na kulia. Husababisha kuchanganya athari ya kutumia sehemu ya nje ya kushoto na kulia iliyounganishwa pamoja.
Kuna tofauti gani kati ya Inner Join na Outer Join?
Inner Join haihifadhi safu mlalo ambazo hazilinganishwi katika matokeo, lakini uunganisho wa nje utahifadhi rekodi zote kutoka angalau jedwali moja (kulingana na kiunganishi gani cha nje kimetumika). Kwa hivyo, tabia ya kutokuwa na habari iliyopo kwenye safu ambazo hazilinganishwi kwenye jedwali la matokeo haifai, unahitaji kila wakati kutumia moja ya viungo vya nje (mahali pa kujiunga kwa ndani). Kujiunga kwa ndani kunaweza kutoleta matokeo ikiwa hakuna ulinganifu unaopatikana. Lakini kujiunga kwa nje kutazalisha jedwali la matokeo kila wakati, hata bila safu mlalo zinazolingana. Kujiunga kwa ndani kutarudisha majedwali yenye thamani kila wakati (ikirudishwa). Lakini viungio vya nje vinaweza kusababisha majedwali yenye thamani batili.