Razlika između unutrašnjeg i vanjskog spoja

Razlika između unutrašnjeg i vanjskog spoja
Razlika između unutrašnjeg i vanjskog spoja

Video: Razlika između unutrašnjeg i vanjskog spoja

Video: Razlika između unutrašnjeg i vanjskog spoja
Video: Razlika između psihopate i sociopate 2024, Novembar
Anonim

Inner Join vs Outer Join

Unutarnje i vanjsko spajanje su dvije metode SQL spajanja koje se koriste u obradi upita za baze podataka. Oni pripadaju porodici spojnih klauzula (druge dvije su lijevi i desni spoj). Međutim, postoji Self Join koji se može koristiti u specijaliziranim situacijama. Svrha Join je da kombinuje polja koristeći zajedničke vrednosti za dve tabele. Ovi spojevi kombinuju zapise iz više tabela u bazi podataka. On kreira rezultujuće skupove, koji se mogu sačuvati kao druga tabela.

Šta je Inner Join?

Najčešće korištena operacija SQL Join je Inner Join. Može se smatrati zadanim tipom spajanja koji se koristi u aplikacijama. Unutrašnje spajanje koristi spoj-predikat za kombinovanje dve tabele. Pod pretpostavkom da su dvije tabele A i B, tada će predikat za spajanje uporediti redove A i B kako bi otkrio sve parove koji zadovoljavaju predikat. Vrijednosti stupaca svih zadovoljenih redova tablica A i B se kombiniraju kako bi se stvorio rezultat. Na to se može gledati kao na prvo uzimanje unakrsnog spajanja (kartezijanski proizvod) svih zapisa, a zatim vraćanje samo onih zapisa koji zadovoljavaju predikat spajanja. Međutim, u stvarnosti se kartezijanski proizvod ne izračunava jer je vrlo neefikasan. Umjesto toga se koristi hash pridruživanje ili spajanje sortiranja i spajanja.

Šta je Outer Join?

Za razliku od unutrašnjeg spajanja, vanjsko spajanje čuva sve zapise čak i ako ne može pronaći odgovarajući zapis. To znači da vanjski spoj treba zapis da pronađe odgovarajući zapis da bi se pojavio u rezultatu. Umjesto toga, vratit će sve zapise, ali neusklađeni zapisi će imati nulte vrijednosti. Vanjski spojevi su podijeljeni u tri podkategorije. Oni su lijevi vanjski spoj, desni vanjski spoj i puni vanjski spoj. Ova diferencijacija se zasniva na tome koji se red tabele (lijeva tabela, desna tabela ili obje tabele) zadržava kada se pronađu neusklađeni zapisi. Lijevo vanjsko spajanje (takođe poznato kao jednostavno lijevo spajanje) zadržava sve zapise lijeve tablice. To znači, čak i ako je broj podudarnih zapisa nula, onda će i dalje imati zapise u tabeli rezultata, ali će imati nulte vrijednosti za sve stupce B. Drugim riječima, sve vrijednosti iz lijeve tablice se vraćaju s podudarnim vrijednostima iz desne tabela (ili nulte vrijednosti kada nije uparen). Ako se vrijednosti iz više redova iz lijeve tablice upare s jednim redom iz desne tablice, red iz desne tablice će se ponoviti prema potrebi. Desno vanjsko spajanje je prilično slično lijevom vanjskom spoju, ali tretman tablica se poštuje. To znači da će rezultat imati sve redove desne tablice barem jednom sa podudarnim vrijednostima lijeve tablice (i nultim vrijednostima za neusklađene desne vrijednosti). Potpuno vanjsko spajanje je sveobuhvatnije i od lijevog i desnog vanjskog spajanja. Rezultat je kombinovanje efekta primjene i lijevog i desnog vanjskog spoja.

Koja je razlika između unutrašnjeg spoja i vanjskog spoja?

Unutarnje spajanje ne zadržava neusklađene redove u rezultatu, ali vanjsko spajanje će zadržati sve zapise iz najmanje jedne tabele (ovisno o tome koje vanjsko spajanje je korišteno). Dakle, ponašanje da nema prisutnih informacija o neusklađenim redovima u tabeli rezultata je nepoželjno, morate uvijek koristiti jedan od vanjskih spojeva (umjesto unutrašnjeg spajanja). Unutrašnje spajanje možda neće dati rezultat ako nije pronađeno podudaranje. Ali vanjsko spajanje će uvijek proizvesti rezultantnu tabelu, čak i bez odgovarajućih redova. Unutrašnje spajanje će uvijek vraćati tabele sa vrijednostima (ako su vraćene). Ali vanjska spajanja mogu rezultirati tablicama s nultim vrijednostima.

Preporučuje se: