Inner Join vs Outer Join


I SQL, a Ansluta sig används för att jämföra och kombinera - bokstavligen gå med - och returnera specifika rader med data från två eller flera tabeller i en databas. En inre koppling hittar och returnerar matchande data från tabeller, medan en yttre anslutning hittar och returnerar matchande data och några olika data från tabeller.

Inre koppling

Ett inre deltagande fokuserar på gemensamheten mellan två tabeller. När man använder en inre anslutning måste det finnas åtminstone några matchande data mellan två (eller flera) tabeller som jämförs. Ett inre sammanhang söker tabeller för att matcha eller överlappa data. När den har hittats, kombinerar det inre föreningen och returnerar informationen till ett nytt bord.

Exempel på Inner Join

Låt oss överväga ett gemensamt scenario med två tabeller: produktpriser och kvantiteter. Den gemensamma informationen i de två tabellerna är produktnamn, så det är den logiska kolumnen att gå med i tabellerna . Det finns några produkter som är vanliga i de två tabellerna; andra är unika för en av tabellerna och har ingen match i den andra tabellen.

En inre föreningen på Produkter returnerar information om endast de produkter som är vanliga i båda tabellerna.

Yttre gå med

En yttre delning returnerar en uppsättning poster (eller rader) som inkluderar vad en inre del skulle returnera men innehåller också andra rader för vilka ingen motsvarande match hittas i den andra tabellen.

Det finns tre typer av yttre föreningar:

  • Vänster yttre anslutning (eller vänster anslutning)
  • Right Outer Join (eller Right Join)
  • Full Outer Join (eller Full Join)

Var och en av dessa yttre förbindelser avser den del av data som jämförs, kombineras och returneras. Ibland produceras nollor i denna process eftersom vissa data delas medan andra data inte är.

Vänster yttre gå med

En vänster yttre anslutning returnerar all data i Tabell 1 och all delad data (så den inre delen av Venn-diagrammet), men endast motsvarande data från Tabell 2, vilket är rätt anslutning.

Vänster Anslut Exempel

I vår exempeldatabas finns det två produkter - apelsiner och tomater - på "vänster" (priserna tabell) som inte har en motsvarande post på "right" (kvantitetstabellen). I ett vänster sammanhang ingår dessa rader i resultatuppsättningen med en NULL i kolumn Quantity. De andra raderna i resultatet är samma som innerförbandet.

Höger yttre gå med

En höger yttre förbindelse returnerar Tabell 2: s data och all delad data, men endast motsvarande data från Tabell 1, som är den vänstra anslutningen.

Höger Gå med i Exempel

På samma sätt som exemplet i vänster anslutning, innehåller utmatningen från en högra yttre anslutning alla rader av innerförbindelsen och två rader - broccoli och squash - från "höger" (mängder bord) som inte har matchande poster till vänster.

Fullständig yttre anslutning

En full yttre anslutning, eller fullständig anslutning, vilket är inte som stöds av det populära MySQL-databashanteringssystemet, kombinerar och returnerar Allt data från två eller flera tabeller, oavsett om det finns delad information. Tänk på en fullständig anslutning som bara duplicera all angiven information, men i ett bord, snarare än flera tabeller. Om matchande data saknas kommer nulls att produceras.

Det här är bara grunderna, men många saker kan göras med att gå med. Det finns även anteckningar som kan utesluta andra medlemmar!

Video förklara Inner vs Outer Joins

Denna video förklarar skillnaden mellan olika typer av samlingar. Det är cued upp till början vid den punkt där diskussionen om samverkan börjar.

referenser

  • Skillnad mellan inre och yttre anslutning - Stack Overflow
  • SQL Inner Join - Quackit
  • SQL Outer Join - Quackit
  • Använda inre kontakter - Microsoft SQL Server
  • Använda yttre anslutningar - Microsoft SQL Server
  • Visuell representation av SQL-anslutningar - CodeProject
  • Wikipedia: Gå med (SQL)