Introduktion till typer av sammanfogningar i SQL
En kopplingsklausul i SQL tjänar syftet med att kombinera rader från två eller flera tabeller. Processen att kombinera rader beror på en kolumn som är relaterad till dem. De fyra olika typerna av sammanfogningar i SQL benämns som en inre sammanfogning, vänsterfog, högerfog och fullfog. Innan vi verkligen kan börja använda någon typ av koppling behöver vi ett RDBMS eller ett relationsdatabashanteringssystem där vi kommer att ladda uppgifterna. Ett av de mycket enkla sätten att förstå sammanfogningarna är genom att använda Venn-diagrammet. Med hjälp av ett Venn-diagram gör det enkelt att mäta alla möjliga och logiska relationer mellan olika uppsättningar av data. Låt oss förstå detta en efter en med Venn-diagrammet. Senare kommer vi att förstå skillnaden mellan dessa med hjälp av några praktiska exempel. Låt oss anta att det finns två datauppsättningar i vår databas lagrade i form av tabell ett och tabell två. Det finns en viss relation mellan de två tabellerna som specificeras i form av en primär nyckel och ett främmande nyckelbegrepp. Om du går med i två tabeller som har någon typ av relation kommer Venn-diagramrepresentationen av scenariot att vara något liknande,
Mängden på denna överlappning kommer att bestämma graden av likhet mellan de två tabellerna, dvs. tabell A och tabell B. Detta betyder att antalet poster från tabell ett, som matchar posten från tabell två, representeras av överlappningsavsnittet. Detta är en delmängd data. Vi får fyra olika typer av sammanfogningar baserat på den deluppsättning data vi väljer från de två tabellerna.
Syntax of Join:
SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Typer av sammanfogningar i SQL
- Inre koppling
- Vänster gå med
- Rätt gå
- Full gå med
Nedan förklarar vi olika typer av sammanfogningar i detalj.
1. Inre gå
I en inre koppling väljer vi bara de data som är vanliga i båda tabellerna. (dvs del 3 här) För att göra det mer exakt, väljs alla poster från båda tabellerna som matchar det villkor som nämns med sammanfogningen i denna sammanfogning.
Syntax of Inner Join:
SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition
2. Vänster gå med
I vänster sammanfogning väljer vi all data från vänster tabell och från höger tabell väljer vi bara den datauppsättning som matchar det villkor som nämns med kopplingen (här område 1 + 3)
Syntax av Left Join:
SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
3. Right Delta
Vid höger koppling väljer vi alla data från den högra tabellen och från vänster tabell väljer du bara den datauppsättning som matchar det villkor som nämns med kopplingen (här 3 + 2)
Syntax av Right Join:
SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
4. Full gå med
I fullständig sammanfogning, alla poster från båda tabellerna slås samman och väljs oavsett villkor som nämns med sammanfogningen har uppfyllt eller inte. (här 1 + 2 + 3)
Syntax of Full Join:
SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Exempel på Joins i SQL
Tänk på de två tabellerna nedan:
1. Exempel på ORDER_DETAILS
Tabellbeställningen innehåller detaljerna om den beställning som beställts av kunden, såsom order-ID, antalet beställda produkter, beställningens storlek, id för kunden som beställde och datum då ordern placerades. En sådan tabell kan användas av vilken som helst onlinewebbplats för att lagra beställningsinformationen.
ORDER_DETAILS Tabell:
ORDER_ID | No_of_Items | Beställningssumma | Kundnummer | Orderdatum |
123 | 3 | 5500 | P_1 | 2019/01/20 |
234 | 2 | 6500 | P_12 | 2019/02/10 |
345 | 1 | 10 tusen | P_13 | 2019/05/27 |
456 | 4 | 4000 | P_14 | 2019/11/07 |
567 | 2 | 20.656 | P_1 | 2019/12/15 |
678 | 3 | 15 tusen | P_11 | 2019/10/27 |
2. Exempel på CUSTOMER_DETAILS
Låt oss nu ta en annan tabell där kundens detaljer lagras för att kunna leverera beställningen till sina respektive adresser. Kundtabellen kommer därför att ha kundens detaljer såsom kund-id (cust_id) som kommer att vara unik för varje kund. Nu förnamnet och efternamnet lagras i fältet som heter Cust_First_Name och Cust_Last_Name. De andra fälten lagrar information som e-post-id, kundens mobilnummer tillsammans med adressen, Pincode, stad och stat. Således kan vi se att vårt kundtabell ser ut som -
CUSTOMER_DETAILS Tabell:
Cust_Id | Cust_First_Name | Cust_Last_Name | Pinkod | Adress | Cust_Mobile | Stad | stat | Cust_email |
P_50 | Alice | Peter | 111111 | 330 xyz street | 123 | Bangalore | KA | |
P_12 | James | Dsouza | 155.511 | 420 abc koloni | 234 | Hyderabad | AP | |
P_15 | Harry | Krukmakare | 123456 | 551 mg väg | 444 | Noida | delhi | |
P_40 | Miley | Parker | 111.121 | 11 fot väg | 224 | Bangalore | KA | |
P_10 | Herman | buske | 123.423 | 34 thanco Street | 432 | delhi | delhi | |
P_18 | Dan | Brun | 134.523 | 50: e oberoende vägen | 145 | Gurugram | Haryana | |
P_20 | James | Russel | 111111 | 101 mg väg | 678 | Bangalore | KA | |
P_1 | Miley | Madison | 100011 | 45: e kaverapplayout | 987 | Chennai | TN |
Nu använder vi detta exempel, låt oss förstå funktionaliteten hos förbindelserna. Vi kan se att förhållandet mellan de två tabellerna, dvs ORDER_DETAILS-tabellen och CUSTOMER_DETAILS-tabellen är upprättat av nyckeln som har värdet för kund-ID, dvs. ORDER_DETAILS-tabell.
Några viktiga punkter att notera här innan vi fortsätter är:
- Inte alla kunder i vår CUSTOMER_DETAILS-tabell har gjort en beställningsförfrågan.
- Inte all beställningsbegäran som vi har i vår ORDER_DETAILS-tabell har en kund_id som finns i vår CUSTOMER_DETAILS-tabell, vilket innebär att det för vissa beställningar inte finns någon detalj om kunden.
3. Inre gå
Inner Join ger dig endast de poster som villkoret är uppfyllda för.
Fråga:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Produktion:
Cust_First_Name | Cust_email | No_of_Items | Beställningssumma | Orderdatum |
Miley | 3 | 5500 | 2019/01/20 | |
James | 2 | 6500 | 2019/02/10 | |
Miley | 2 | 20.656 | 2019/12/15 |
4. Vänster gå med
Left Join ger dig alla poster från den vänstra tabellen, dvs. CUSTOMER_DETAILS-tabellen. Om det inte finns några beställningar av kunden returnerar det ett nollvärde för kolumnerna i tabellen ORDER_DETAILS.
Fråga:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Produktion:
Cust_First_Name | Cust_email | No_of_Items | Beställningssumma | Orderdatum |
Alice | NULL | NULL | NULL | |
James | 2 | 6500 | 2019/02/10 | |
Harry | NULL | NULL | NULL | |
Miley | NULL | NULL | NULL | |
Herman | NULL | NULL | NULL | |
Dan | NULL | NULL | NULL | |
James | NULL | NULL | NULL | |
Miley | 3 | 5500 | 2019/01/20 | |
Miley | 2 | 20.656 | 2019/12/15 |
5. Right Join
Right, Join kommer att ge dig alla poster från den högra tabellen, dvs ORDER_DETAILS-tabellen. Om det inte finns några kundregister för beställningen kommer det att returnera ett nollvärde för kolumnerna i tabellen CUSTOMER_DETAILS.
Fråga:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Produktion:
Cust_First_Name | Cust_email | No_of_Items | Beställningssumma | Orderdatum |
Miley | 3 | 5500 | 2019/01/20 | |
James | 2 | 6500 | 2019/02/10 | |
NULL | NULL | 1 | 10 tusen | 2019/05/27 |
NULL | NULL | 4 | 4000 | 2019/11/07 |
Miley | 2 | 20.656 | 2019/12/15 | |
NULL | NULL | 3 | 15 tusen | 2019/10/27 |
6. Fullständig anslutning
Full Join ger dig alla poster som anges från båda tabellerna.
Fråga:
select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id
Produktion:
Cust_First_Name | Cust_email | No_of_Items | Beställningssumma | Orderdatum |
Alice | NULL | NULL | NULL | |
James | 2 | 6500 | 2019/02/10 | |
Harry | NULL | NULL | NULL | |
Miley | NULL | NULL | NULL | |
Herman | NULL | NULL | NULL | |
Dan | NULL | NULL | NULL | |
James | NULL | NULL | NULL | |
Miley | 3 | 5500 | 2019/01/20 | |
Miley | 2 | 20.656 | 2019/12/15 | |
NULL | NULL | 1 | 10 tusen | 2019/05/27 |
NULL | NULL | 4 | 4000 | 2019/11/07 |
NULL | NULL | 3 | 15 tusen | 2019/10/27 |
Fördelar med Joins i SQL
- Snabbare körning vilket innebär snabbare hämtning av önskade kolumner.
- Optimerad, läsbar och förståelig
- Ökning i prestanda.
Slutsats
Som vi använder använder vi JOINs för att lägga till och hämta fälten från olika tabeller.
- Inner Join hämtar poster där det givna villkoret är uppfyllt.
- Left Join ger dig alla rader från vänsterbordet, även om det givna villkoret inte matchar.
- Right Join ger dig alla rader från det vänstra bordet, även om det givna villkoret inte matchar.
- Full Join ger alla raderna när det finns en matchning i ett av tabellerna.
- Gå med frågor kan användas med kommandon som - VÄLJ, INSERT, UPDATE, DELETE.
- Föreningar får också överensstämmelse med olika klausuler som - GROUP BY, SUB QUERIES, WHERE, AGGREGATE FUNCTIONS, etc.
Rekommenderad artikel
Detta har varit en guide till typer av sammanfogningar i SQL. Här diskuterar vi de olika typerna av Joins i SQL och dess fördelar tillsammans med exempel. Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer -
- Fördelar med NoSQL
- SQL-hanteringsverktyg
- Databas i SQL
- Wildcard i SQL
- Topp 6 typer av sammanfogningar i MySQL med exempel