Aanbevolen, 2022

Editor'S Choice

Verschil tussen links, rechts en volledige outer join

Eerder hebben we de verschillen besproken tussen Inner Join en Outer Join, waar we de soorten outer join hebben besproken. Outer Join is degene die de tuples behoudt in het resultaat dat verloren zou zijn gegaan tijdens Join-bewerking. In dit artikel; we gaan de verschillen tussen de soorten Outer Join bespreken. Er zijn drie soorten outer join; Links Outer Join, Right Outer Join en Full Outer Join. De links, rechts en volledige outer join verschillen in hun uitvoeringsplan en de verkregen resultaten. We kunnen een buitenwoord van links, rechts en volledige outer join weglaten. Laten we de verschillen tussen Links, Rechts en Volledige outer Join bekijken met behulp van de onderstaande vergelijkingsgrafiek.

Vergelijkingstabel

Basis voor vergelijkingLinks Outer JoinRechts Outer JoinVolledige Outer Join
basis-Alle tuples van de linker tabel blijven in het resultaat.Alle tuples van de rechtse tafel blijven in het resultaat.Alle tuples van zowel de linker als de rechter tabel blijven in het resultaat.
NULL-extensieDe tupels van de linker tabel die geen overeenkomend tupel in de rechter tabel hebben, worden uitgebreid met de NULL-waarde voor kenmerken van de rechtse tabel.De tupels van de rechtertabel die geen overeenkomend tupel in de linker tabel hebben, worden uitgebreid met de NULL-waarde voor attributen van de linkertabel.
De tupels van de linker- en de rechtse tabel die niet de overeenkomende tupels in respectievelijk de tabel rechts en links hebben, worden uitgebreid met de NULL-waarde voor attributen van de rechter- en linkertabel.

Definitie van Left Outer Join

Stel dat we hebben: " Table_A Left Outer Join Table_B ". Dus tabel A is onze linkertabel zoals deze links van Links Outer Join- bewerking lijkt en tabel B is onze juiste tabel.

Aanvankelijk zou de inner join worden toegepast op tabel A en tabel B die alle overeenkomende tuple uit tabel A en B zal teruggeven.

Vervolgens worden alle tuples uit Tabel_A geretourneerd die geen overeenkomend tuple in Tabel_B hebben. Zodanig dat de resulterende tupels opgevuld zouden zijn met NULL- waarden voor de attributen van de juiste tabel.

Het resultaat verkregen uit de Left Outer Join behoudt dus alle tuples van de linker tabel en alleen de bijpassende tuples van de rechtse tabel.

Laten we Left Outer Join bespreken met een voorbeeld; we hebben twee tabellen hieronder, Studententabel en Departemententabel .

Nu zullen we Left Outer Join toepassen op Student and Department Table.

SELECT * FROM Student LEFT OUTER JOIN Department
AAN Student. Student_ID = Afdeling.Student_ID

In de bovenstaande query is de tabel Student de linker tabel en de tabel Afdeling de juiste tabel. Dus volgens Left Outer Join moet het resultaat alle tuples van de Student-tabel hebben en alleen tuples die overeenkomen met de Departemententabel.

Bekijk het resultaat van Left Outer Join; het heeft alle tuples van de Student-tabel samen met de bijpassende tuples van zowel de Student- als de Afdelingstabel. De student-id van Jimmy, Joseph Harry van Student-tafel was niet aanwezig in de afdelingsstabel. Vandaar dat de attribuutwaarden van Departemententabel voor Jimmy, Joseph Harry worden uitgebreid naar NULL.

Definitie van Right Outer Join

Stel dat we " Table_A Right Outer Join Table_B " hebben. Dus tabel A is onze linkertabel zoals deze links van de bewerking Rechts buiten join lijkt en Tabel B is onze juiste tabel.

Net als bij Left Outer Join wordt in eerste instantie de inner join toegepast op Table_A en Table_B, die alle overeenkomende tuple van tabel A en B retourneren.

Vervolgens worden alle tuples uit tabel_B geretourneerd die geen overeenkomend tuple in tabel_A hebben. Zodanig dat de resulterende tupels opgevuld zouden zijn met NULL-waarden voor de attributen van de linker tabel.

Het resultaat verkregen uit de rechter outer join behoudt dus alle tuples van de rechtertabel en alleen de bijpassende tuples van de linkertabel.

Laten we Right Outer Join bespreken met een voorbeeld; hierboven hebben we twee tabellen: studententabel en afdelingsgroep.

Nu zullen we de rechter buitenste join- student-tabel en afdelings-tabel toepassen.

SELECT * FROM Student RIGHT OUTER JOIN Department
AAN Student. Student_ID = Afdeling.Student_ID

In de bovenstaande query is Student Table onze Linkertabel en Departemententabel is onze juiste tabel. Volgens de bewerking Right Outer Join moet het resultaat alle tuples bevatten uit de Department-tabel en alleen overeenkomende tuples uit de Student Table.

Observeer het resultaat verkregen uit de rechter outer join; het heeft alle tuples uit de Departementtabel samen met de bijpassende tuples van zowel de Student als de Department tafel. De Student_ID 10536 en 00954 van de Departemententabel zijn niet aanwezig in de Studententabel. Daarom wordt de kenmerkwaarde van Naam voor Student_ID 10536 en 00954 uitgebreid naar NULL.

Definitie van volledige outer join

Stel dat we hebben, " Tabel_A Volledige Outer Join Table_B ". Dus tabel_A is onze linkertabel zoals deze links van de bewerking Volledige externe join lijkt en tabel_B is onze juiste tabel.

Volledige outer join is de combinatie van beide, Left Outer Join en Right Outer Join . In eerste instantie past het inner join toe op Table_A en Table_B om overeenkomende tuples op te halen uit beide tabellen. Vervolgens worden de tupels van tabel_A uitgebreid met NULL die geen overeenkomend tuple in tabel B hebben. Verder breidt het die tuples uit tabel B uit met NULL die geen overeenkomend tuple in tabel A hebben.

Volledige buitenste join behoudt dus alle tuples van zowel de linker- als de juiste tabel, samen met de overeenkomende tupels van beide tabellen.

Laten we FULL Outer Join bespreken met een voorbeeld; we hebben twee tabellen hierboven, Studententabel en Departemententabel .

Nu zullen we de Full Outer Join to Student-tabel en de Department-tabel toepassen.

SELECT * FROM Student FULL OUTER JOIN Department
AAN Student. Student_ID = Afdeling.Student_ID

In de bovenstaande query is Student Table onze linkertabel en Department Table is onze juiste tabel. Volgens Full Outer Join moet het resultaat alle tuples uit beide tabellen bevatten.

Observeer het resultaat verkregen uit volledige outer join; het bevat alle tuples uit de tabel Student en afdeling samen met de overeenkomende tuples van zowel de tabel Student als Afdeling. De student-id van Jimmy, Joseph Harry oftewel 10026, 02256, 56362 respectievelijk van de Student-tabel, was niet aanwezig in de afdelingsstabel. Vandaar dat de attribuutwaarden van Departemententabel voor Jimmy, Joseph Harry worden uitgebreid naar NULL . De Student_ID 10536 en 00954, van Departemententabel, zijn niet aanwezig in de kolom Student_ID van de tabel Student. Daarom wordt de kenmerkwaarde van het kenmerk Naam voor Student ID 10536 en 00954 uitgebreid naar NULL .

Belangrijkste verschillen tussen links, rechts en volledige outer join

  1. Het resultaat van Left Outer Join bevat alle tuples van de linker tabel. Evenzo heeft het resultaat van Right Outer Join alle tupels van de juiste tabel. En het resultaat van Full Outer Join bevat alle tuples van zowel de linker als de rechter tabel.
  2. In Left Outer Join worden tuples van de linkertabel die geen overeenkomend tuple in de rechtertabel hebben uitgebreid met Null-waarden voor de kenmerken van de rechtse tabel. Het tegenovergestelde is het geval voor Right Outer Join. En in Full Outer Join worden de tuples van de linker- en rechtertabellen die geen overeenkomstige tuples hebben in de rechter- en linkertabel respectievelijk uitgebreid met NULL voor de kenmerken van respectievelijk de rechter en de linker tabel.

Conclusie:

Zorg voor de posities van tabelnamen in een query. Aangezien de positie van de tabelnaam in de query bepaalt of de tabel wordt beschouwd als de tabel links of de rechtse tabel.

Top