Vergelijkingstabel
Basis voor vergelijking | Links Outer Join | Rechts Outer Join | Volledige 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-extensie | De 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.
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.
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.
Belangrijkste verschillen tussen links, rechts en volledige outer join
- 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.
- 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.