Iekšējā pievienošanās vs Ārējā pievienošanās
Iekšējā un ārējā pievienošanās ir divas no SQL savienošanas metodēm, ko izmanto datu bāzu vaicājumu apstrādē. Viņi pieder pievienošanās klauzulu grupai (pārējās divas ir kreisās un labējās pievienošanās). Tomēr pastāv Self Join, kuru var izmantot īpašās situācijās. Pievienojieties, lai apvienotu laukus, izmantojot abas tabulas, izmantojot kopējās vērtības. Šie savienojumi apvieno ierakstus no vairākām tabulām datu bāzē. Tas izveido izrietošās kopas, kuras var saglabāt kā citu tabulu.
Kas ir iekšējā pievienošanās?
Visbiežāk izmantotā SQL Join darbība ir iekšējā pievienošanās. To var uzskatīt par noklusējuma savienojuma veidu, ko izmanto programmās. Iekšējā savienojumā izmantojiet savienojuma predikātu, lai apvienotu divas tabulas. Pieņemot, ka abas tabulas ir A un B, savienojošais predikāts salīdzinās A un B rindas, lai uzzinātu visus pārus, kas atbilst predikātam. Lai iegūtu rezultātu, tiek apvienotas visu apmierināto A un B tabulu rindu kolonnu vērtības. To var aplūkot tā, ka vispirms tiek ņemts visu ierakstu šķērsgriezums (Dekarta produkts) un pēc tam tiek atgriezti tikai tie ieraksti, kas atbilst savienojuma predikātam. Tomēr patiesībā Dekarta produkts nav aprēķināts, jo tas ir ļoti neefektīvs. Tā vietā tiek izmantota jaukta pievienošanās vai apvienošanās apvienošana.
Kas ir ārējais savienojums??
Atšķirībā no iekšējā savienojuma, ārējais savienojums saglabā visus ierakstus, pat ja tas nevar atrast atbilstošu ierakstu. Tas nozīmē, ka ārējam savienojumam ir nepieciešams ieraksts, lai atrastu atbilstošu ierakstu, lai tas parādītos rezultātā. Tā vietā tas atgriezīs visus ierakstus, bet nesaskaņotajiem ierakstiem būs nulles vērtības. Ārējie savienojumi ir sadalīti trīs apakš kategorijās. Tās ir kreisās, ārējās, labās un ārējās. Šī diferenciācija tiek balstīta uz to, kura tabulas (kreisā tabula, labā tabula vai abas tabulas) tiek saglabāta, kad tiek atrasti nesavienoti ieraksti. Kreisās puses ārējie savienojumi (pazīstami arī kā vienkārši kreisie savienojumi) saglabā visus kreisās tabulas ierakstus. Tas nozīmē, ka pat tad, ja skaitļu saskaņošanas ieraksti ir nulle, tam rezultātu tabulā joprojām būs ieraksti, taču visām B kolonnām būs nulles vērtības. Citiem vārdiem sakot, visas vērtības no kreisās tabulas tiek atgrieztas ar atbilstošām vērtībām no labās. tabula (vai nulles vērtības, ja tā nav saskaņota). Ja vērtības no vairākām rindām no kreisās tabulas tiek saskaņotas ar vienu rindu no labās tabulas, rinda no labās tabulas tiks atkārtota pēc nepieciešamības. Labais ārējais savienojums ir diezgan līdzīgs kreisajam ārējam savienojumam, bet tabulu apstrāde tiek ievērota. Tas nozīmē, ka rezultātam vismaz vienreiz būs visas labās tabulas rindas ar saskaņotajām kreisās tabulas vērtībām (un nesaskaņotajām labajām vērtībām). Pilnīga ārējā savienošana ir visaptverošāka nekā gan kreisā, gan labā ārējā savienošana. Tā rezultātā tiek apvienota gan kreisās, gan labās ārējās daļas apvienošanas ietekme.
Kāda ir atšķirība starp iekšējo pievienošanos un ārējo pievienošanos?
Iekšējais savienojums nesaglabā nepārspējamās rindas rezultātā, bet ārējais savienojums saglabās visus ierakstus no vismaz vienas tabulas (atkarībā no tā, kura ārējā savienošana ir izmantota). Tātad, ja rezultātu tabulā nav informācijas par nesaskaņotām rindām, ir nevēlama rīcība, vienmēr jāizmanto viens no ārējiem savienojumiem (iekšējā savienojuma vietā). Iekšējā pievienošanās var nedot rezultātu, ja netiek atrasta atbilstība. Bet ārējais savienojums vienmēr radīs rezultātu tabulu, pat bez atbilstošām rindām. Iekšējais savienojums vienmēr atdos tabulas ar vērtībām (ja tās tiks atgrieztas). Bet ārējie savienojumi var radīt tabulas ar nulles vērtībām.