Sammenligningstabel
Grunnlag for sammenligning | Venstre Ytre Bli med | Høyre Ytre Bli med | Full Outer Join |
---|---|---|---|
grunn~~POS=TRUNC | Alle tuplene på venstre bord forblir i resultatet. | Alle tupler på høyre bord forblir i resultatet. | Alle tuplene fra venstre og høyre bord forblir i resultatet. |
NULL forlengelse | Tuplene på venstre bord som ikke har en matchende tuple i høyre tabell, blir utvidet med NULL-verdi for attributter til høyre tabell. | Tuplene til høyre bord som ikke har en matchende tuple i venstre tabell, blir utvidet med NULL-verdi for attributter til venstrebordet. | Tuplene til venstre og høyre bord som ikke har de tilhørende tuplene i henholdsvis høyre og venstre bord, blir utvidet med NULL-verdi for attributter til høyre og venstre tabell. |
Definisjon av Venstre Ytre Bli med
Anta at vi har " Table_A Left Outer Join Table_B ". Så Table_A er vårt venstre bord som det ser ut til å være igjen av Left Outer Join- operasjon og Table_B er vårt høyre bord.
I utgangspunktet vil det indre forbindelsen bli anvendt på Tabell_A og Tabell_B som vil returnere all matchende tuple fra tabell A og B.
Deretter returnerer alle tuplene fra Table_A som ikke har en matchende tuple i Table_B. Slik at de resulterende tuplene vil bli polstret med NULL- verdier for attributter til høyre bord.
Resultatet som er oppnådd fra Venstre Outer Join beholder alle tuplene fra venstre bord og bare matchende tupler fra høyre bord.
La oss diskutere Left Outer Join med et eksempel; Vi har to tabeller under, Studentbord og Avdelingstabell .
Nå vil vi søke på venstre side, på student- og avdelingstabell.
VELG * FRA Student LEFT OUTER JOIN Department
ON Student. Student_ID = Avdeling.Student_ID
I spørsmålet ovenfor er tabell Student det venstre bordet og bordet Avdeling er riktig bord. Så ifølge Left Outer Join, må resultatet ha alle tuplene fra Studentbordet, og bare matchende tupler fra avdelingstabellen.
Definisjon av Right Outer Join
Anta at vi har " Table_A Right Outer Join Table_B ". Så Table_A er vårt venstre bord som det ser ut til å være igjen av Right Outer Join- operasjon og Table_B er vårt høyre bord.
Som i Left Outer Join, ble det innvendige tilførselslaget brukt på Table_A og Table_B som returnerer alle matchende tuple fra tabell A og B.
Deretter returnerer det alle tuplene fra Table_B som ikke har en matchende tuple i Table_A. Slik at de resulterende tuplene ville være polstret med NULL-verdier for attributter til venstrebordet.
Derfor beholder resultatet oppnådd fra høyre ytre ledd alle tuplene fra høyre bord og bare matchende tupler fra venstre bord.
La oss diskutere Right Outer Join med et eksempel; ovenfor har vi to bord, Studentbord og Avdelingstabell.
Nå skal vi bruke Right Outer Join til Studentbord og avdelingstabell.
VELG * FRA Student RIGHT OUTER JOIN Department
ON Student. Student_ID = Avdeling.Student_ID
I spørsmålet ovenfor er Studentbordet vårt venstre bord og avdelingstabellen vårt høyre bord. I henhold til Utreise til høyre, må resultatet inkludere alle tuplene fra avdelingstabellen og bare matchende tupler fra Studentbordet.
Definisjon av full utvendig delta
Anta at vi har " Table_A Full Outer Join Table_B ". Så Table_A er vårt venstre bord som det ser ut til å være igjen av Full Outer Join-operasjon og Table_B er vårt høyre bord.
Full Outer Join er kombinasjonen av begge, Left Outer Join og Right Outer Join . I utgangspunktet gjelder det indre sammenføyning på Table_A og Table_B for å hente matchende tuples fra begge tabellene. Deretter strekker den ut de tuplene i Table_A med NULL som ikke har en matchende tuple i Table_B. Videre utvider de de to tuplene fra Table_B med NULL som ikke har en matchende tuple i Table_A.
Derfor holder Full Outer Join alle tuplene fra venstre og høyre bord, sammen med de matchende tuplene til begge bordene.
La oss diskutere FULL Outer Join med et eksempel; Vi har to tabeller over, Studentbord og Avdelingstabell .
Nå skal vi bruke Full Outer Join til Studentbord og avdelingstabell.
VELG * FRA Student FULL OUTER JOIN Department
ON Student. Student_ID = Avdeling.Student_ID
I spørsmålet ovenfor er Studentbord vårt venstre bord og avdelingstabell er vårt høyre bord. Ifølge Full Outer Join må resultatet inkludere alle tuplene fra begge bordene.
Nøkkelforskjeller mellom venstre, høyre og full utvendig delta
- Resultatet av Left Outer Join har alle tuplene i venstre bord. På samme måte har resultatet av Right Outer Join alle tuplene til høyre bord. Og resultatet av Full Outer Join har alle tuplene fra både venstre og høyre bord.
- I venstre ytre sammenføyning blir tupler av venstre bord som ikke har en matchende tuple i høyre tabell utvidet med null-verdier for attributter til høyre tabell. Motsatt er tilfellet for Right Outer Join. Og i Full Outer Join, blir tuplene fra venstre og høyre tabeller som ikke har matchende tupler i henholdsvis høyre og venstre bord, utvidet med NULL for attributter av henholdsvis høyre og venstre bord.
Konklusjon:
Ta vare på posisjonene til tabellnavn i en spørring. Da plasseringen av tabellnavnet i spørsmålet avgjør om tabellen skulle betraktes som venstre tabell eller høyre tabell.