Verschil tussen Inner Join en Outer Join

Anonim

Inner Join vs Outer Join

Binnenverbindingen en Outer join zijn twee van de SQL-verbindingsmethoden die worden gebruikt bij het zoeken naar databases. Zij behoren tot het gezin van lidmaatschapsklausules (andere twee zijn linker- en rechterverbindingen). Er is echter een Self Join, die voor gespecialiseerde situaties kan worden gebruikt. Het doel van Join is om velden te combineren met de gemeenschappelijke waarden op de twee tabellen. Deze joins combineren records uit meerdere tabellen in een database. Het creëert resulterende sets, die als een andere tabel kunnen worden opgeslagen.

Wat is Inner Join?

Meestal gebruikte SQL Join operation is de Inner Join. Het kan worden beschouwd als het standaard type join dat wordt gebruikt in applicaties. Inner join gebruiken het join-predicaat om twee tabellen te combineren. Uitgaande van de twee tabellen zijn A en B, dan zal het join-predicaat rijen A en B vergelijken om alle paren te vinden die voldoen aan het predicaat. Kolomwaarden van alle tevreden rijen van A- en B-tabellen worden gecombineerd om het resultaat te maken. Het kan worden bekeken als eerst de cross join (Cartesian product) van alle records en dan alleen de records die voldoen aan het join-predicaat terug te keren. In werkelijkheid wordt Cartesiaanse product echter niet berekend omdat het zeer inefficiënt is. Hash join of sort-merge join is in plaats daarvan gebruikt.

Wat is Outer Join ?

In tegenstelling tot, Inner join, behoudt de buitenste join alle records, zelfs als het geen bijpassend record kan vinden. Dat betekent dat de buitenste join nodig heeft een record om een ​​bijpassend record te vinden dat het in het resultaat verschijnt. In plaats daarvan zal het alle records terugzetten, maar ongeëvenaarde records hebben nullwaarden. Buitenste verbindingen zijn verdeeld in drie subcategorieën. Zij worden achtergelaten, rechter buitenkant en volledige buitenste verbinding. Deze differentiatie is gebaseerd op de tabel (links tabel, rechter tafel of beide tabellen) rij wordt behouden wanneer ongezochte records worden gevonden. Linker buitenbanden (ook bekend als gewoon linkse join) behoudt alle records van de linker tafel. Dat wil zeggen dat, zelfs als de aantal overeenkomende records nul is, dan hebben ze nog records in de resultaatlijst, maar hebben nullwaarden voor alle kolommen van B. Met andere woorden, alle waarden van de linker tabel worden teruggezonden met gelijke waarden van rechts tabel (of nul waarden wanneer ongeëvenaard). Als de waarden uit meerdere rijen van de linker tabel overeenkomen met een enkele rij van de rechter tabel, wordt de rij van de rechter tabel herhaald indien nodig. De rechter buitenste join is vrijwel vergelijkbaar met de linker buitenkant, maar de behandeling van tafels is vereerd. Dat betekent dat het resultaat alle rijen van de juiste tabel minstens één keer heeft met de matched left table values ​​(en nulwaarden voor ongeëvenaarde juiste waarden). Volledige buitenbinding is uitgebreider dan beide links en rechts buitenbanden. Het resulteert in het combineren van het effect van het aanbrengen van zowel links als rechts buiten elkaar verbonden.

Wat is het verschil tussen Inner Join en Outer Join?

Inner Join houdt niet de ongeëvenaarde rijen in het resultaat, maar de buitenste join houdt alle records van tenminste één tabel vast (afhankelijk van welke buitenste verbinding is gebruikt). Zo is het gedrag van het feit dat er geen informatie aanwezig is op ongeëvenaarde rijen in de resultaatlijst, ongewenst. U moet altijd een van de buitenste verbindingen gebruiken (in plaats van binnenste join). Inner join kan geen resultaat opleveren als er geen wedstrijden worden gevonden. Maar buitenboord zal altijd een resulterende tafel produceren, zelfs zonder bijpassende rijen. Inner join zal altijd tabellen met waarden terugzenden (indien teruggegeven). Maar buitenste verbindingen kunnen resulteren in tabellen met nulwaarden.