Zephyrnet-logotyp

Förstå SQL JOINs: Inner, Outer, Full, Left och Right

Datum:

Beskrivning

SQL-kopplingar är grundläggande operationer som används för att kombinera data från flera tabeller baserat på gemensamma kolumner. En gedigen förståelse för SQL-kopplingar är avgörande för effektiv sökning och datamanipulation. I den här artikeln kommer vi att utforska de olika typerna av sammanfogningar, deras praktiska användning och viktiga överväganden när du använder dem.

Inre koppling

En inre koppling hämtar poster som har matchande värden i båda tabellerna som ansluts. Den returnerar endast de korsande raderna, exklusive icke-matchande. Syftet med en inre koppling är att hitta relaterad data över tabeller, vilket gör det användbart när du behöver hämta information från flera tabeller med en gemensam nyckel.

När man bestämmer sig för om man ska använda en inre join i SQL spelar flera faktorer in. På uppsidan är en inre koppling särskilt effektiv eftersom den bara returnerar relevant data. Detta kan vara en stor fördel i frågor där vi bara vill matcha data över olika tabeller.

En inre koppling kan också hjälpa till att minska mängden data som behöver bearbetas i senare operationer, och därigenom potentiellt förbättra prestandan genom att överföra och bearbeta endast de data som behövs.

Exempelvis

Tänk på två tabeller, Customers och Orders, med en gemensam kolumn customer_id. För att hämta alla kunder som har lagt beställningar kan vi använda en innerkoppling enligt följande:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
INNER JOIN Orders
ON Customers.customer_id = Orders.customer_id;

Den här frågan kan returnera data som följande:

Kundnummer namn order_id
1 Per Andersson 1001
2 Jane Smith 1002
1 Per Andersson 1003
3 Mary Johnson 1004
2 Jane Smith 1005

Vänster anslutning

En vänsterkoppling, även känd som en vänster yttre koppling, returnerar alla poster från den vänstra tabellen och de matchade posterna från den högra tabellen. Om ingen matchning hittas returneras NULL-värden för högra tabellens kolumner. Den här typen av koppling är användbar när du vill hämta alla poster från en tabell samtidigt som du inkluderar relaterade data från en annan tabell, om tillgänglig.

Exempelvis

Genom att använda samma "Kunder"- och "Beställningar"-tabeller kan vi hämta alla kunder och deras respektive beställningar, om några, med en vänsteranslutning:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
Kundnummer namn order_id
1 Per Andersson 1001
2 Jane Smith 1002
1 Per Andersson 1003
3 Mary Johnson 1004
2 Jane Smith 1005
4 Alice Williams NULL

Höger Gå med

En högerkoppling, även känd som en höger yttre koppling, liknar en vänsterkoppling, men den hämtar alla poster från den högra tabellen och de matchande posterna från den vänstra tabellen. Icke-matchande värden i den vänstra tabellen kommer att resultera i NULL värden i motsvarande kolumner. Höger kopplingar används mer sällan än vänster kopplingar men kan vara användbara när du analyserar data primärt från den högra tabellen, eller när du behöver bevara posterna från den högra tabellen och visa de matchande posterna från den vänstra tabellen.

Högerkopplingar är särskilt användbara i situationer där du vill visa all data från den högra tabellen, oavsett om det finns en matchning i den vänstra tabellen. Detta kan vara användbart när du behöver visa alla produkter och deras respektive försäljningsdata, även om vissa produkter inte har sålts ännu.

En högerkoppling hämtar alla poster från den högra tabellen och de matchande posterna från den vänstra tabellen. Om det finns icke-matchande värden i den vänstra tabellen kommer resultatet att innehålla NULL värden i motsvarande kolumner.

Exempelvis

För att illustrera en högerkoppling, överväg att vända tabellerna från föregående exempel. Vi har två bord: Customers och Orders. Vi vill hämta alla beställningar och deras associerade kunder, inklusive beställningar utan associerade kunder (t.ex. gästbeställningar). Vi kan använda en högerkoppling:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
RIGHT JOIN Orders
ON Customers.customer_id = Orders.customer_id;
Kundnummer namn order_id
1 Per Andersson 1001
2 Jane Smith 1002
1 Per Andersson 1003
3 Mary Johnson 1004
2 Jane Smith 1005
NULL NULL 1006

I det här exemplet kommer resultatet att visa alla poster från Orders tabellen, och om det finns en matchning i Customers tabell, kommer den att visa motsvarande kundinformation. Om det inte finns någon match, customer_id och name fält från Customers bordet kommer att vara NULL.

Full/Ytteranslutning

En fullständig koppling, även känd som en fullständig yttre koppling, hämtar alla poster från båda tabellerna, inklusive matchande poster såväl som icke-matchande poster från båda tabellerna. Om en rad inte har en matchning i den motsatta tabellen, fylls NULL-värdena i motsvarande kolumner. Fullständiga kopplingar är användbara för att kombinera data heltäckande, särskilt när du vill analysera data från båda tabellerna utan att förlora någon information.

Exempelvis

För att visa en fullständig anslutning kommer vi återigen att överväga två tabeller, Customers och Orders. Vi vill hämta alla kunder och deras tillhörande beställningar, inklusive kunder utan beställningar och beställningar utan kunder. Detta kan till exempel vara användbart för att identifiera kunder som inte har lagt några beställningar eller beställningar som inte är kopplade till någon kund. Vi kan uppnå detta med en fullständig anslutning:

SELECT Customers.customer_id, Customers.name, Orders.order_id
FROM Customers
FULL JOIN Orders
ON Customers.customer_id = Orders.customer_id;
Kundnummer namn order_id
1 Per Andersson 1001
2 Jane Smith 1002
1 Per Andersson 1003
3 Mary Johnson 1004
2 Jane Smith 1005
NULL NULL 1006
4 Alice Williams NULL

Optimera JOIN-prestanda

För att optimera prestandan för dina SQL JOINs, överväg följande tips:

  1. Använd lämpliga sammanfogningstyper baserat på önskad resultatuppsättning. Använd till exempel INNER JOINs när du bara behöver matchande poster från båda tabellerna, och använd LEFT eller RIGHT JOINs när du vill inkludera icke-matchande poster från en av tabellerna.

  2. Välj endast de nödvändiga kolumnerna för att minimera onödig datahämtning. Detta kan hjälpa till att minska mängden data som bearbetas och förbättra frågeprestanda.

  3. Ansök när det är möjligt WHERE klausuler för att filtrera data innan gå med i borden. Detta kan hjälpa till att minska antalet rader som behöver sammanfogas och på så sätt förbättra prestandan.

  4. Överväg att använda index på kolumnerna som används i anslutningsvillkoret, eftersom det kan förbättra prestandan för dina anslutningar avsevärt.

Kolla in vår praktiska, praktiska guide för att lära dig Git, med bästa praxis, branschaccepterade standarder och medföljande fuskblad. Sluta googla Git-kommandon och faktiskt lära Det!

Genom att följa dessa bästa praxis kan du säkerställa att dina SQL JOINs är effektiva och returnerar de önskade resultaten i tid.

En gedigen förståelse för SQL-kopplingar är viktig för att arbeta med relationsdatabaser. Genom att behärska olika typer av join och deras användning kan du snabbt och enkelt använda SQL för att söka och analysera komplicerade datauppsättningar.

I den här guiden diskuterar vi de olika SQL-kopplingstyperna – Inner, Outer, Full, Left och Right – och ger några insikter om hur de fungerar, deras fördelar och nackdelar.

Slutsats

Låt oss göra en snabb sammanfattning av hur man använder SQL-kopplingar för att kombinera data från flera tabeller, tillsammans med deras användningsfall, för- och nackdelar:

  • Inre sammanfogar hämta endast matchande poster från båda tabellerna. Detta är den vanligaste typen av anslutning och är användbar när du behöver kombinera data baserat på en delad nyckel eller attribut. Men om det inte finns några matchande poster kommer resultatet att vara tomt.

  • Vänster går med hämta alla poster från den vänstra tabellen och matchande poster från den högra tabellen. Om det inte finns några matchande poster i den högra tabellen, returneras NULL-värden. Den här typen av koppling är användbar när du vill inkludera alla poster från den vänstra tabellen, även om det inte finns någon motsvarande data i den högra tabellen.

  • Höger går med hämta alla poster från den högra tabellen och matchande poster från den vänstra tabellen. I likhet med vänsterkopplingar, om det inte finns några matchande poster i den vänstra tabellen, returneras NULL-värden. Denna koppling är användbar när du vill inkludera alla poster från den högra tabellen, även om det inte finns någon motsvarande data i den vänstra tabellen.

  • Fullt ansluter hämta alla poster från båda tabellerna, oavsett om det finns matchande poster eller inte. Om det inte finns någon matchning returneras NULL-värden för de saknade data. Den här typen av koppling är användbar när du vill kombinera data från båda tabellerna och inkludera alla poster, även om det inte finns någon matchning mellan dem.

Genom att förstå dessa kopplingstyper och deras syfte kan du manipulera och analysera data effektivt. Tänk på att valet av lämplig kopplingstyp beror på ditt specifika användningsfall och det önskade resultatet. Genom att behärska dessa kopplingstyper blir du bättre rustad att hantera komplexa dataanalysuppgifter och optimera dina SQL-frågor.

plats_img

Senaste intelligens

plats_img