SQLShack (Svenska)

Den här artikeln ger en fullständig översikt med exempel av SQL Outer-koppling, inklusive fullständig, höger och vänster yttre koppling samt täcker sammanslutningen mellan SQL vänster och höger yttre kopplingar.

Det är viktigt att förstå processen för att få data från multipeln tabeller. En nybörjare kanske inte har tanken på att gå med i SQL Server. I detta tips tar vi en översikt över SQL-sammanfogningar, lär oss SQL OUTER JOIN tillsammans med dess syntax, exempel och användningsfall.

I ett relationsdatabassystem är det bästa praxis att följa principerna av Normalisering, där vi i grund och botten delar upp stora tabeller i de mindre tabellerna. I ett valt uttalande kan vi hämta data från dessa tabeller med hjälp av sammanfogningar. Vi kan gå med i tabellerna och få de obligatoriska fälten från dessa tabeller i resultatuppsättningen. Dessa tabeller bör ha ett gemensamt fält att relatera till varandra. Du kan hitta data delade över flera databaser och ibland är det också en mycket komplex struktur. Med Joins kan vi sammanfoga data från flera tabeller, databaser på ett användarvänligt sätt och representera dessa data i applikationen.

Vi kan representera en SQL JOIN med följande bild

Vi kan många typer av SQL Join i SQL Server. I följande bild kan du se SQL Joins-kategorier

Låt oss utforska SQL Outer Join-detaljer i det kommande avsnittet.

Översikt över SQL OUTER JOIN

Vi använder SQL OUTER JOIN för att matcha rader mellan tabeller. Vi kanske vill få matchningsrader tillsammans med omatchade rader också från en eller båda tabellerna. Vi har följande tre typer av SQL OUTER JOINS.

  1. SQL Full Outer Join
  2. SQL Left Outer Join
  3. SQL Right Outer Join

Låt oss utforska varje SQL Outer Join med exempel.

SQL Full Outer Join

I SQL Full Outer Join ingår alla rader från båda tabellerna . Om det finns några omatchade rader visar det NULL-värden för dem.

Vi kan förstå effektivt med hjälp av exempel. Låt oss skapa en provtabell och infoga data i den.

Du kan hänvisa till följande datamodell för båda tabellerna.

Infoga data i tabellen Anställd med följande skript.

Infoga data i avdelningstabellen

Vi kan representera ett logiskt förhållande mellan två tabeller med hjälp av ett Venn-diagram. I ett Venn-diagram innehåller flera överlappande cirklar och varje cirkel representerar en enhet eller tabell. Det gemensamma området eller det överlappande området i Venn-diagrammet representerar de gemensamma värdena mellan båda tabellerna.

Till exempel, i följande skärmdump har vi två överlappande cirklar. Varje cirkel har en tabell (anställd och avdelningar). Låt oss förstå FULL Outer Join med följande exempel.

Vi har ett gemensamt fält (EmpID) i båda tabellerna; därför kan vi gå med i tabellen med den här kolumnen. I följande fråga definierade vi FULL OUTER JOIN mellan avdelningar och anställd tabell i EMPID-kolumnen i båda tabellerna.

1
2
3

VÄLJ *
FRÅN Anställd
FULL YTTRE GÅ MED Avdelningar PÅ Employee.EmpID = Departments.EmpID;

SQL Full Outer Join ger följande rader i en utdata

  • Matchande rader mellan båda tabellerna
  • Omatchade rader från båda tabellerna (NULL-värden )

Låt oss utföra den här frågan för att returnera Full Outer Join-frågan. Vi får följande utdata.

Vi kan också se några poster med NULL-värden. Låt oss förstå detta på ett bättre sätt med hjälp av ett Venn-diagram.

I följande skärmdump kan du se följande information

  • EmpID 1, 2,3,4,5 , 6,10 finns i tabellen Anställda och avdelningar. I frågan om Full Outer Join får vi alla dessa rader med data från båda tabellerna
  • EmpID 7, 8, 9 finns i tabellen Anställda men inte i tabellen avdelningar. Det innehåller inga matchande rader i avdelningstabellen. därför; vi får NULL-värden för dessa poster

Nu, för demoändamål, låt oss infoga ytterligare en post i avdelningstabeller . I den här frågan infogar vi EmpID 11 som inte finns i tabellen Anställd.

Kör om frågan om SQL Full Outer Join. I följande bild får du ytterligare en rad med NULL-värden. Vi har ingen matchande rad för EmpID 11 i medarbetartabellen.På grund av detta får vi NULL-värden för det i utdata.

Som en sammanfattning kan vi representera SQL Full Outer Join med följande Venn-diagram. Vi får det som representeras i det markerade området i utgången från Full Outer Join.

SQL FULL OUTER JOIN och WHERE-sats

Vi kan lägga till en WHERE-sats med en SQL FULL OUTER JOIN för att få rader utan matchande data mellan båda Join-tabellerna.

I följande fråga lägger vi till en where-sats till visa endast poster som har NULL-värden.

1
2
3
4
5

VÄLJ *
FRÅN anställd
FULL OUTER JOIN Avdelningar PÅ Anställd.EmpID = Avdelningar.EmpID
VAR Employee.EmpID ÄR NULL
ELLER Avdelningar.EmpID ÄR NULL

Utför detta kommando och visa utdata. Den returnerar bara rader som inte matchar varken i tabellen medarbetare eller avdelningar.

SQL VÄNSTER YTTRE GÅNG

I en SQL Left Outer Join får vi följande rader i vår utdata.

  • Det ger utdata från den matchande raden mellan båda tabellerna
  • Om inga poster matchar från vänster tabell visar den också dessa poster med NULL-värden

Kör följande kod för att returnera SQL LEFT OUTER JOIN-utdata

1
2
3

VÄLJ *
FRÅN anställd
VÄNSTER YTTRE GÅ MED Avdelningar PÅ Anställd.EmpID = Avdelningar.EmpID

I följande bild kan du se att vi har NULL-värden för EmpID 7,8 och 9. Dessa EmpID finns inte på höger sida Avdelningstabell.

Vi måste notera placeringen av tabellplaceringen i anslutningsuttalandet. För närvarande har vi en anställdstabell till vänster och avdelningstabellen på höger sida.

Låt oss skriva om frågan och byta plats för tabellerna i frågan. I den här frågan har vi avdelningstabellen i vänster position, så vänster yttre anslutning bör kontrollera värdena för denna tabell och returnera ett NULL-värde i händelse av en ojämnhet. se att endast ett NULL-värde för EmpID 11. Det beror på att EmpID 11 inte är tillgängligt i tabellen Anställda.

Som en sammanfattning, vi kan representera SQL Left Outer Join med följande Venn-diagram. Vi får det markerade området i utdata från SQL Left Outer Join.

SQL Right OUTER JOIN

I SQL Right Outer Join får vi följande rader i vår utdata.

  • Det ger utdata från den matchande raden mellan båda tabellerna
  • Om inga poster matchar från rätt tabell, den visar också dessa poster med NULL-värden

Utför följande fråga för att få utdata från Right Outer Join

1
2
3

VÄLJ *
FRÅN anställd
RÄTT YTTRE GÅ MED Avdelningar PÅ Anställd.EmpID = Avdelningar.EmpID

I följande bild kan du se att vi får alla matchande rader tillsammans med en rad med NULL-värden. Nollvärderaden har EmpID 11 eftersom den inte finns i tabellen Anställd. Du kan också se att avdelningstabellens position är i rätt position i Gå med. På grund av detta får vi inte värden från tabellen Anställd (vänster position) som inte matchar avdelningstabellen (höger sida).

Som markeras tidigare är tabellpositionen viktig i JOIN-uttalandet. Om vi ändrar tabellpositioner får vi olika utdata. I följande fråga har vi avdelningstabellen (vänster) och medarbetartabellen (höger).

1
2
3
4

VÄLJ *
FRÅN Avdelningar
RÄTT YTTRE GÅ MED ANSÄTT PÅ avdelningar. 855a9d8a79 ”>

Du kan se skillnaden i Right Outer Join efter att du har bytt tabellpositioner i ovanstående fråga.

Som en sammanfattning kan vi representera SQL Right Outer Join med följande Venn-diagram. Vi får markerat område i utdata från SQL Right Outer Join.

Föreningen mellan SQL Left Outer Join och SQL Right Outer Gå med

I de föregående exemplen utforskade vi SQL Left Outer Join och SQL Right Outer Join med olika exempel. Vi kan göra en union av resultatet av både SQL Left Outer Join och SQL Right Outer Join. Det ger utdata från SQL Full Outer Join.

Kör följande fråga som ett alternativ till SQL Full Outer Join.

1
2
3
4
5
6
7

VÄLJ *
FRÅN anställd
VÄNSTER YTTRE GÅ MED Avdelningar PÅ Employee.EmpID = Avdelningar.EmpID
UNION ALL
VÄLJ *
FRÅN anställd
RÄTT YTTRE GÅ MED Avdelningar PÅ Employee.EmpID = Avdelningar.EmpID

I följande utdata får vi alla matchande poster, ommatchning av poster från vänster tabell och ommatchning av poster från höger tabell. Det liknar en utdata från SQL Full Outer Join.

Slutsats

I den här artikeln, vi utforskade SQL Outer Join och dess typer tillsammans med exempel. Jag hoppas att du tyckte att den här artikeln var till hjälp. Lämna gärna feedback i kommentarerna nedan.

  • Författare
  • Senaste inlägg
Som MCSA-certifierad och Microsoft Certified Trainer i Gurgaon, Indien, med 13 års erfarenhet, arbetar Rajendra för en mängd stora företag med fokus på prestandaoptimering, övervakning, hög tillgänglighet och katastrofåterställningstrategier och implementering. Han är författare till hundratals auktoritativa artiklar om SQL Server, Azure, MySQL, Linux, Power BI, Performance Tuning, AWS / Amazon RDS, Git och relaterade teknologier som hittills har visats av över 10 miljoner läsare.
Han är skaparen av en av de största gratis onlinesamlingarna av artiklar om ett enda ämne, med sin 50-delarserie om SQL Server Always On Availability Groups. Baserat på sitt bidrag till SQL Server-communityn har han fått utmärkelser med olika utmärkelser inklusive den prestigefyllda ”Årets bästa författare” kontinuerligt 2020 och 2021 på SQLShack.
Raj är alltid intresserad av nya utmaningar så om du behöver rådgivning hjälp om alla ämnen som behandlas i hans skrifter, han kan nås på [email protected]
Visa alla inlägg av Rajendra Gupta

Senaste inlägg av Rajendra Gupta (se alla)
  • Sessionstidsavbrott i SQL Server Alltid tillgängligt Grupper – 8 februari 2021
  • Utför uppgraderingar av mindre och större versioner för AWS RDS SQL Server – 29 januari 2021
  • Distribuera AWS RDS PostgreSQL-instanser – 27 januari 2021

Write a Comment

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *