Unutarnje spajanje u odnosu na vanjsko spajanje
Unutarnje spajanje i Vanjsko spajanje dvije su SQL metode spajanja koje se koriste u obradi upita za baze podataka. Pripadaju obitelji klauzula spajanja (druge dvije su Lijevi i Desni spojevi). Međutim, postoji Self Join koji se može koristiti za specijalizirane situacije. Svrha spajanja je kombiniranje polja pomoću zajedničkih vrijednosti u dvije tablice. Ova spajanja kombiniraju zapise iz više tablica u bazi podataka. Stvara rezultirajuće skupove, koji se mogu spremiti kao druga tablica.
Što je unutarnje spajanje?
Najčešće korištena operacija SQL spajanja je unutarnje spajanje. Može se smatrati zadanom vrstom spajanja koja se koristi u aplikacijama. Unutarnje spajanje koristi spojni predikat za kombiniranje dviju tablica. Pod pretpostavkom da su dvije tablice A i B, tada će predikat spajanja usporediti retke A i B kako bi pronašao sve parove koji zadovoljavaju predikat. Vrijednosti stupaca svih zadovoljnih redaka tablica A i B kombiniraju se za stvaranje rezultata. Može se promatrati kao da prvo uzima križni spoj (kartezijanski produkt) svih zapisa, a zatim vraća samo zapise koji zadovoljavaju predikat spajanja. Međutim, u stvarnosti se kartezijanski produkt ne izračunava jer je vrlo neučinkovit. Umjesto toga koristi se hash join ili sort-merge joint.
Što je vanjsko spajanje?
Za razliku od unutarnjeg spajanja, vanjsko spajanje čuva sve zapise čak i ako ne može pronaći odgovarajući zapis. To znači da vanjskom pridruživanju treba zapis za pronalaženje odgovarajućeg zapisa da bi se pojavio u rezultatu. Umjesto toga, vratit će sve zapise, ali nepodudarni zapisi imat će nulte vrijednosti. Vanjski spojevi podijeljeni su u tri potkategorije. Oni su lijevi vanjski spoj, desni vanjski spoj i puni vanjski spoj. Ova se razlika temelji na tome koji se red tablice (lijeva tablica, desna tablica ili obje tablice) zadržava kada se pronađu nepodudarni zapisi. Lijeva vanjska spajanja (poznata i kao jednostavno lijevo spajanje) zadržavaju sve zapise lijeve tablice. To znači, čak i ako je zapis koji se podudara s brojem nula, tada će i dalje imati zapise u tablici rezultata, ali će imati nulte vrijednosti za sve stupce od B. Drugim riječima, sve vrijednosti iz lijeve tablice vraćaju se s podudarnim vrijednostima iz desne tablica (ili nulte vrijednosti kada se ne podudaraju). Ako se vrijednosti iz više redaka iz lijeve tablice podudaraju s jednim redom iz desne tablice, redak iz desne tablice će se ponoviti prema potrebi. Desno vanjsko spajanje prilično je slično lijevom vanjskom spajanju, ali se poštuje tretman tablica. To znači da će rezultat imati sve retke desne tablice barem jednom s odgovarajućim vrijednostima lijeve tablice (i nulte vrijednosti za neusklađene desne vrijednosti). Potpuno vanjsko spajanje sveobuhvatnije je i od lijevog i desnog vanjskog spajanja. To rezultira kombiniranjem učinka primjene lijevog i desnog vanjskog spoja.
Koja je razlika između unutarnjeg i vanjskog spajanja?
Unutarnje spajanje ne zadržava neusklađene retke u rezultatu, ali vanjsko spajanje će zadržati sve zapise iz najmanje jedne tablice (ovisno o tome koje je vanjsko spajanje korišteno). Dakle, nepoželjno je ponašanje nepostojanja informacija o recima koji se ne podudaraju u tablici rezultata, stoga morate uvijek koristiti jedno od vanjskih spajanja (umjesto unutarnjeg spajanja). Unutarnje spajanje možda neće dati rezultat ako se ne pronađu podudaranja. Ali vanjsko spajanje uvijek će proizvesti rezultantnu tablicu, čak i bez odgovarajućih redaka. Unutarnje spajanje uvijek će vratiti tablice s vrijednostima (ako se vrate). Ali vanjska spajanja mogu rezultirati tablicama s nultim vrijednostima.