Preporučeno, 2024

Izbor Urednika

Razlika između lijevog, desnog i punog vanjskog pridruživanja

Ranije smo raspravljali o razlikama između Unutarnjeg Pridruživanja i Vanjskog Pridruživanja, gdje smo pregledali vrste Outer Join. Outer Join je onaj koji čuva torke u rezultatu koji bi bio izgubljen dok se pridružio operaciji. U ovom članku; razgovarat ćemo o razlikama između vrsta vanjskog pridruživanja. Postoje tri vrste vanjskog spajanja; Lijevo vanjsko spajanje, desno vanjsko spajanje i puni vanjski pristup. Lijevi, desni i puni vanjski pristup razlikuju se po planu izvršenja i dobivenim rezultatima. Možemo izostaviti vanjsku riječ s lijeve, desne i pune vanjske stranice. Ispitajmo razlike između lijevog, desnog i punog vanjskog pristupa uz pomoć donjeg usporednog dijagrama.

Tablica usporedbe

Osnova za usporedbuLijevo vanjsko spajanjeDesno Outer JoinFull Outer Join
Osnovni, temeljniSve tuple lijeve tablice ostaju u rezultatu.Sve tuple desnog stola ostaju u rezultatu.Sve naljepnice s lijeve i desne strane ostaju u rezultatu.
NULL proširenjeTuple lijeve tablice koja nema odgovarajuću točku u desnoj tablici proširene su s NULL vrijednošću za atribute desne tablice.Tuple desne tablice koje nemaju odgovarajuću točku u lijevoj tablici proširene su s NULL vrijednošću za atribute lijeve tablice.
Tuple lijeve i desne tablice koje nemaju odgovarajuće tuple u desnoj i lijevoj tablici, se proširuju s NULL vrijednošću za atribute desnih i lijevih tablica.

Definicija lijevog vanjskog spajanja

Pretpostavimo da imamo: " Tablica_Lijevo Outer Join Table_B ". Tako je Table_A naša lijeva tablica kako se čini lijevo od lijeve Outer Join operacije i Table_B je naša desna tablica.

Prvobitno, unutarnje spajanje bi se primijenilo na Table_A i Table_B, što će vratiti sve odgovarajuće brojeve iz tablice A i B.

Zatim će vratiti sve tuple iz Table_A koje nemaju odgovarajući tuple u Table_B. Tako da bi se rezultirajuće tuple dodavale NULL vrijednostima za atribute desne tablice.

Prema tome, rezultat dobiven od lijevog vanjskog pridruživanja zadržava sve torke iz lijeve tablice i samo odgovarajući torkovi s desne tablice.

Dopustite nam da razgovaramo o lijevom vanjskom članu s primjerom; imamo dvije tablice u nastavku, Studentski stol i Tablica odjela .

Sada ćemo primijeniti lijevo vanjsko pridruživanje, na tablicu studenata i odjela.

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

U gornjem upitu, tablica Student je lijeva tablica, a tablica Odjel je desna tablica. Dakle, prema lijevom vanjskom spajanju, rezultat mora imati sve torpe iz Studentskog stola, a samo podudaranja iz tablice Odjela.

Pridržavajte se rezultata dobivenih s lijeve vanjske strane; ima sve torke iz Studentskog stola zajedno s odgovarajućim tuplesima iz tablice Student i Department. Student_id Jimmyja, Joseph Harry iz Studentskog stola nije bio prisutan u stolu Odjela. Stoga se vrijednosti atributa odjela za odjel za Jimmyja, Josepha Harryja proširuju na NULL.

Definicija desnog vanjskog spajanja

Pretpostavimo da imamo: " Tablica_A Pravo vanjsko spajanje tablice_B ". Tako je Table_A naša lijeva tablica kako se pojavljuje lijevo od Right Outer Join operacije, a Table_B je naša desna tablica.

Kao u lijevom vanjskom spoju, inicijalno, unutarnje spajanje bi se primijenilo na Table_A i Table_B što će vratiti sve odgovarajuće brojeve iz tablice A i B.

Zatim će vratiti sve tuple iz Table_B koje nemaju odgovarajući tuple u Table_A. Tako da bi se rezultirajuće tuple dodavale NULL vrijednostima za atribute lijeve tablice.

Dakle, rezultat dobiven iz desnog vanjskog spajanja zadržava sve torpe s desne tablice i samo odgovarajući tuples iz lijeve tablice.

Dopustite nam da raspravimo o Pravom vanjskom pridruživanju s primjerom; iznad imamo dvije tablice, Studentski stol i Stol odjela.

Sada ćemo primijeniti desnu vanjsku tablu i stolni stol.

SELECT * FROM Student RIGHT OUTER JOIN Odjel
ON Student. Student_ID = Odjel.Student_ID

U gore navedenom upitniku, Studentski stol je naš lijevi stol, a tablica odjela je naša desna tablica. Prema operaciji desnog vanjskog spajanja, rezultat mora uključivati ​​sve torpe iz tablice Odjela i samo podudaranja iz učeničke tablice.

Promatrajte rezultat dobiven iz desnog vanjskog spoja; on ima sve torpe iz tablice odjela zajedno s odgovarajućim brojevima iz tablice studenata i odjela. Student_ID 10536 i 00954 tablice Odjela, nisu prisutni u tablici studenata. Stoga se vrijednost atributa Name za Student_ID 10536 i 00954 proširuje na NULL.

Definicija Full Outer pridružiti

Pretpostavimo da imamo: " Tablica_Polni vanjski stol za spajanje_B ". Tako je Table_A naša lijeva tablica jer se pojavljuje lijevo od Full Outer Join operacije i Table_B je naša desna tablica.

Full Outer Join je kombinacija oba, Left Outer Join i Right Outer Join . U početku, primjenjuje unutarnje pridruživanje na Table_A i Table_B za dohvaćanje odgovarajućih brojeva iz obje tablice. Tada se proširuju one torke od Table_A s NULL-om koje nemaju odgovarajući tuple u Table_B. Nadalje, ona proširuje one torke iz Table_B s NULL-om koji nemaju odgovarajuću točku u Table_A.

Dakle, Full Outer Join zadržava sve torke s lijeve i desne tablice, zajedno s odgovarajućim brojevima obaju tablica.

Porazgovarajmo o FULL Outer Joinu s primjerom; imamo dvije tablice iznad, Studentski stol i Stol odjela .

Sada ćemo primijeniti Full Outer Join na Studentski stol i Stol odjela.

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

U gore navedenom upitu, Student Table je naš lijevi stol, a stolni stol je naša desna tablica. Prema Full Outer Join, rezultat mora uključivati ​​sve torpe iz oba tablice.

Promatrajte rezultat dobiven iz potpunog vanjskog spoja; on ima sve torke iz tabele studenata i odjela zajedno s odgovarajućim brojevima iz tablice studenata i odjela. Student_id Jimmyja, Joseph Harry odnosno 10026, 02256, 56362, Studentskog stola, nije bio prisutan u tablici Odjela. Stoga su vrijednosti atributa odjela Odjela za Jimmyja, Josepha Harryja proširene na NULL . Student_ID 10536 i 00954, tablice Odjela, nisu prisutne u Student_ID stupcu Studentske tablice. Stoga se vrijednost atributa Name atributa za Student_ID 10536 i 00954 proširuje na NULL .

Ključne razlike između lijevog, desnog i punog vanjskog pridruživanja

  1. Rezultat lijevog vanjskog pridruživanja ima sve torke lijeve tablice. Slično tome, rezultat Pravog vanjskog pridruživanja ima sve torke desne tablice. A rezultat Full Outer Join-a ima sve torke s lijeve i desne tablice.
  2. U lijevom vanjskom pridruživanju, brojeve lijeve tablice koje nemaju odgovarajuću točku u desnoj tablici proširuju se vrijednostima Null za atribute desne tablice. Suprotno je slučaju za Right Outer Join. A u Full Outer Join, torke s lijeve i desne tablice koje nemaju odgovarajuće tuples u desnoj i lijevoj tablici, respektivno se proširuju s NULL za atribute desne i lijeve tablice.

Zaključak:

Vodite računa o položajima imena tablica u upitu. Kako položaj imena tablice u upitu odlučuje hoće li se tablica smatrati lijevom tablicom ili desnom tablicom.

Top