Sammenligningstabel
Grundlag for sammenligning | Venstre Ydre Join | Right Outer Join | Fuldt udvendigt medlemskab |
---|---|---|---|
Grundlæggende | Alle tupler i venstre bord forbliver i resultatet. | Alle tupler i højre bord forbliver i resultatet. | Alle tupler fra venstre såvel som højre bord forbliver i resultatet. |
NULL forlængelse | Tupperne i venstre bord, der ikke har en matchende tuple i højre tabel, udvides med NULL værdi for attributter i højre tabel. | Tuplerne på højre bord, der ikke har en matchende tuple i venstre tabel, udvides med NULL værdi for attributter i venstre bord. | De venstre og højre tavler, der ikke har de tilhørende tupler i henholdsvis højre og venstre bord, udvides med NULL værdi for attributter til højre og venstre tabeller. |
Definition af Venstre Ydre Join
Antag, at vi har " Table_A Left Outer Join Table_B ". Så Table_A er vores venstre bord, da det ser ud til at være venstre for Left Outer Join, og Table_B er vores rigtige bord.
Indledningsvis ville det indre sammenføjning blive anvendt på Table_A og Table_B, som vil returnere alle matchende tuple fra tabel A og B.
Derefter returneres alle tuplerne fra Table_A, der ikke har en matchende tuple i Table_B. Sådan vil de resulterende tupler blive polstret med NULL- værdier for attributterne til det højre bord.
Resultatet opnået fra Left Outer Join beholder alle tupler fra venstre bord og kun matchende tupler fra højre bord.
Lad os diskutere Left Outer Join med et eksempel; Vi har to tabeller nedenfor, Studentbord og Afdelingsbord .
Nu vil vi anvende Left Outer Join, på Student og Department Table.
VÆLG * FRA Student LEFT OUTER JOIN Department
ON Student. Student_ID = Department.Student_ID
I forespørgslen ovenfor er tabelstuderende det venstre bord og bordafdeling er det rigtige bord. Så ifølge Left Outer Join, skal resultatet have alle tuplerne fra Studentbordet og kun matchende tupler fra afdelingsbordet.
Definition af Right Outer Join
Antag, at vi har " Table_A Right Outer Join Table_B ". Så Table_A er vores venstre bord som det ser ud til at være venstre for Right Outer Join operation og Table_B er vores højre bord.
Ligesom i Venstre Ydre Join, blev det indvendige sammentræden påbegyndt på Table_A og Table_B, som returnerer alle de matchende tuple fra tabel A og B.
Derefter returneres alle tuplerne fra Table_B, der ikke har en matchende tuple i Table_A. Sådan vil de resulterende tupler blive polstret med NULL værdier for attributterne af venstre bord.
Derfor beholder resultatet opnået fra den højre ydre samling alle tupler fra højre bord og kun matchende tupler fra venstre bord.
Lad os diskutere Right Outer Join med et eksempel; ovenfor har vi to borde, Studentbord og Afdelingsbord.
Nu vil vi anvende Right Outer Join til Studentbord og Afdelingsbord.
VÆLG * FRA HØJERE UDEN JOIN- afdeling
ON Student. Student_ID = Department.Student_ID
I forespørgslen ovenfor er Studentbordet vores venstre bord og afdeling Tabel er vores rigtige bord. Ifølge Right Outer Join-operationen skal resultatet indeholde alle tupler fra afdelingsbordet og kun matchende tupler fra Studentbordet.
Definition af Fuld ydre tilslutning
Antag, at vi har " Table_A Full Outer Join Table_B ". Så Table_A er vores venstre bord som det ser ud til at være tilbage af Full Outer Join operation og Table_B er vores rigtige bord.
Fuldt udvendigt medlem er kombinationen af begge, Venstre Outer Join og Right Outer Join . Indledningsvis anvender det indvendigt forbund på Table_A og Table_B for at hente matchende tupler fra begge tabellerne. Så udvider de disse tupler af Table_A med NULL, der ikke har en matchende tuple i Table_B. Endvidere udvider de disse tupler fra Table_B med NULL, der ikke har en matchende tuple i Table_A.
Derfor holder Full Outer Join alle tuplerne fra venstre såvel som højre bord sammen med de matchende tupler i begge borde.
Lad os diskutere FULL Ydre Join med et eksempel; Vi har to tabeller over, Studentbord og Afdelingsbord .
Nu vil vi anvende Full Outer Join til Studentbord og Afdelingsbord.
VÆLG * FRA Student FULL OUTER JOIN Department
ON Student. Student_ID = Department.Student_ID
I forespørgslen ovenfor er Studentbordet vores venstre bord og afdelingsbordet er vores rigtige bord. Ifølge Full Outer Join, skal resultatet indeholde alle tupler fra begge tabellerne.
Nøgleforskelle mellem venstre, højre og fuld udadtil
- Resultatet af Left Outer Join har alle tupler i venstre bord. På samme måde har resultatet af Right Outer Join alle tupler på højre bord. Og resultatet af Full Outer Join har alle tuplerne fra både venstre og højre bord.
- I venstre ydre samling udbygges tupler af venstre bord, der ikke har en matchende tuple i højre tabel, med Null-værdier for attributterne til det højre bord. Modsat er tilfældet for Right Outer Join. Og i Fuldt Udvendigt Deltag, forlænges tuplerne fra venstre og højre tabeller, der ikke har matchende tupler i henholdsvis højre og venstre tabeller, med NULL for attributterne til henholdsvis højre og venstre bord.
Konklusion:
Pas på positionerne på tabelnavne i en forespørgsel. Da placeringen af tabelnavnet i forespørgsel afgør, om tabellen vil blive betragtet som venstre bord eller højre tabel.