Introduksjon til typer sammenføyninger i SQL
En koblingsbestemmelse i SQL tjener formålet med å kombinere rader fra to eller flere tabeller. Prosessen med å kombinere rader avhenger av en kolonne som er relatert til dem. De fire forskjellige sammenføyningstypene i SQL er navngitt som en indre sammenføyning, venstre sammenføyning, høyre forbindelse og full forening. Før vi virkelig kan begynne å bruke noen form for sammenføyning, trenger vi et RDBMS eller et Relational Database Management System hvor vi vil laste inn dataene. En av de veldig enkle måtene å forstå sammenføyningene på er ved å bruke Venn-diagrammet. Ved å bruke et Venn-diagram gjør det enkelt å måle alle mulige og logiske forhold mellom forskjellige datasett. La oss forstå dette en etter en ved hjelp av Venn Diagram. Senere vil vi forstå forskjellen mellom disse ved å bruke noen praktiske eksempler. La oss anta at det er to datasett i databasen vår som er lagret i form av tabell én og tabell to. Det er en viss sammenheng mellom de to tabellene som er spesifisert i form av en primærnøkkel og et fremmednøkkelkonsept. Hvis du blir med på to tabeller som har et slags forhold, vil Venn-diagram-representasjonen av scenariet være noe som,
Mengden av denne overlappingen vil bestemme omfanget av likhet mellom de to tabellene, dvs. tabell A og tabell B. Dette betyr at antall poster fra tabell én, som samsvarer med postene fra tabell to, er representert av overlappingsdelen. Dette er ett undersett med data. Vi får fire forskjellige typer sammenføyninger basert på undersettet av data vi plukker fra de to tabellene.
Syntax of Join:
SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Typer sammenføyninger i SQL
- Indre med
- Venstre bli med
- Høyre med
- Full med
Nedenfor forklarer vi forskjellige typer sammenføyninger i detaljert.
1. Inner Join
I en indre sammenføyning velger vi bare dataene som er vanlige i begge tabellene. (dvs. del 3 her) For å gjøre det mer presist, blir alle postene fra begge tabellene som samsvarer med tilstanden som er nevnt med sammenføyningen valgt i denne sammenføyningen.
Syntax of Inner Join:
SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition
2. Venstre bli med
I venstre sammenføyning velger vi alle dataene fra venstre tabell, og fra høyre tabell velger vi bare datasettet som samsvarer med tilstanden som er nevnt med sammenføyningen (her område 1 + 3)
Syntax of Left Join:
SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
3. Høyre med
I høyre sammenhenger velger vi alle dataene fra høyre tabell, og fra venstre tabell velger vi bare datasettet som stemmer overens med tilstanden som er nevnt med sammenføyningen (her 3 + 2)
Syntax of Right Join:
SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition
4. Full bli med
I full sammenføyning blir alle postene fra begge tabellene slått sammen og valgt uavhengig av tilstanden som er nevnt med at sammenføyningen har oppfylt eller ikke. (her 1 + 2 + 3)
Syntax of Full Join:
SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition
Eksempler på sammenføyninger i SQL
Tenk på de to tabellene gitt nedenfor:
1. Eksempel på en ORDER_DETAILS
Tabellordren inneholder detaljene i bestillingen som er lagt inn av kunden, for eksempel ordre-ID, antall bestilte produkter, mengden på ordren, IDen til kunden som har bestilt og datoen da ordren ble lagt inn. Slik type bord kan brukes av alle nettsteder for å lagre detaljene i bestillingen.
ORDER_DETAILS Tabell:
Bestillings ID | No_of_Items | ORDER_AMOUNT | Kunde ID | Bestillingsdato |
123 | 3 | 5500 | P_1 | 01/20/2019 |
234 | 2 | 6500 | P_12 | 02/10/2019 |
345 | 1 | 10000 | P_13 | 05/27/2019 |
456 | 4 | 4000 | P_14 | 11/07/2019 |
567 | 2 | 20656 | P_1 | 12/15/2019 |
678 | 3 | 15000 | P_11 | 10/27/2019 |
2. Eksempel på CUSTOMER_DETAILS
La oss nå ta et nytt bord der kundens detaljer blir lagret slik at vi kan levere bestillingen til deres respektive adresser. Kundebordet vil derfor ha detaljene til kunden, for eksempel kunde-ID (cust_id) som vil være unik for hver kunde. Nå er fornavnet og etternavnet lagret i feltet som heter - Cust_First_Name og Cust_Last_Name. De andre feltene vil lagre informasjonen som e-post-ID, kundens mobilnummer sammen med adresse, Pincode, by og stat. Dermed kan vi se at kundetabellen vår vil se ut som -
CUSTOMER_DETAILS Tabell:
Cust_Id | Cust_First_Name | Cust_Last_Name | PIN-kode | Adresse | Cust_Mobile | By | Stat | Cust_email |
P_50 | Alice | Peter | 111111 | 330 xyz gate | 123 | Bangalore | KA | |
P_12 | James | Dsouza | 155511 | 420 abc koloni | 234 | Hyderabad | AP | |
P_15 | Harry | Potter | 123456 | 551 mg vei | 444 | Noida | Delhi | |
P_40 | Miley | Parker | 111121 | 11 fot vei | 224 | Bangalore | KA | |
P_10 | Herman | Busk | 123423 | 34 thanco Street | 432 | Delhi | Delhi | |
P_18 | Dan | brun | 134523 | 50. uavhengig vei | 145 | Gurugram | Haryana | |
P_20 | James | Russel | 111111 | 101 mg vei | 678 | Bangalore | KA | |
P_1 | Miley | Madison | 100011 | 45. kaverappa-oppsett | 987 | Chennai | TN |
Nå med dette eksemplet, la oss forstå funksjonaliteten til sammenføyningene. Vi kan se at forholdet mellom de to tabellene, dvs. ORDER_DETAILS-tabellen og CUSTOMER_DETAILS-tabellen er etablert av nøkkelen som har verdien av kunde-ID, dvs. Customer_Id som er en primær nøkkel i CUSTOMER_DETAILS-tabellen og en fremmed nøkkel i ORDER_DETAILS-tabellen.
Noen viktige punkter å merke seg her før vi fortsetter er:
- Ikke alle kundene i CUSTOMER_DETAILS-tabellen har lagt inn en ordreforespørsel.
- Ikke alle ordreforespørslene som vi har i ORDER_DETAILS-tabellen har en kunde-ID som er til stede i CUSTOMER_DETAILS-tabellen, noe som betyr at det for noen ordrer ikke er noen detalj om kunden.
3. Inner Join
Inner Join vil kun gi deg de postene som betingelsen er oppfylt for.
Spørsmål:
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
Produksjon:
Cust_First_Name | Cust_email | No_of_Items | ORDER_AMOUNT | Bestillingsdato |
Miley | 3 | 5500 | 01/20/2019 | |
James | 2 | 6500 | 02/10/2019 | |
Miley | 2 | 20656 | 12/15/2019 |
4. Venstre bli med
Left Join vil gi deg alle postene fra venstre tabell, dvs. CUSTOMER_DETAILS-tabellen. Hvis det ikke er bestillinger fra kunden, vil den returnere en nullverdi for kolonnene i ORDER_DETAILS-tabellen.
Spørsmål:
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
Produksjon:
Cust_First_Name | Cust_email | No_of_Items | ORDER_AMOUNT | Bestillingsdato |
Alice | NULL | NULL | NULL | |
James | 2 | 6500 | 02/10/2019 | |
Harry | NULL | NULL | NULL | |
Miley | NULL | NULL | NULL | |
Herman | NULL | NULL | NULL | |
Dan | NULL | NULL | NULL | |
James | NULL | NULL | NULL | |
Miley | 3 | 5500 | 01/20/2019 | |
Miley | 2 | 20656 | 12/15/2019 |
5. Right Join
Til høyre, Delta vil gi deg alle postene fra høyre tabell, dvs. ORDER_DETAILS-tabellen. Hvis det ikke finnes kundeoppføringer for ordren, returnerer det en nullverdi for kolonnene i tabellen CUSTOMER_DETAILS.
Spørsmål:
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
Produksjon:
Cust_First_Name | Cust_email | No_of_Items | ORDER_AMOUNT | Bestillingsdato |
Miley | 3 | 5500 | 01/20/2019 | |
James | 2 | 6500 | 02/10/2019 | |
NULL | NULL | 1 | 10000 | 05/27/2019 |
NULL | NULL | 4 | 4000 | 11/07/2019 |
Miley | 2 | 20656 | 12/15/2019 | |
NULL | NULL | 3 | 15000 | 10/27/2019 |
6. Full bli med
Full Join vil gi deg alle postene som er spesifisert fra begge tabellene.
Spørsmål:
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
Produksjon:
Cust_First_Name | Cust_email | No_of_Items | ORDER_AMOUNT | Bestillingsdato |
Alice | NULL | NULL | NULL | |
James | 2 | 6500 | 02/10/2019 | |
Harry | NULL | NULL | NULL | |
Miley | NULL | NULL | NULL | |
Herman | NULL | NULL | NULL | |
Dan | NULL | NULL | NULL | |
James | NULL | NULL | NULL | |
Miley | 3 | 5500 | 01/20/2019 | |
Miley | 2 | 20656 | 12/15/2019 | |
NULL | NULL | 1 | 10000 | 05/27/2019 |
NULL | NULL | 4 | 4000 | 11/07/2019 |
NULL | NULL | 3 | 15000 | 10/27/2019 |
Fordeler med sammenføyninger i SQL
- Raskere utførelse som betyr raskere henting av ønskede kolonner.
- Optimalisert, lesbar og forståelig
- Økning i ytelse.
Konklusjon
Som sett bruker vi JOINs for å legge til og hente feltene fra forskjellige tabeller.
- Inner Join henter poster der den gitte betingelsen er oppfylt.
- Left Join vil gi deg alle radene fra venstre bord, selv når den gitte betingelsen ikke stemmer overens.
- Right Join vil gi deg alle radene fra venstre bord, selv når den gitte betingelsen ikke stemmer overens.
- Full Join returnerer alle radene når det er en kamp i et av bordene.
- Bli med på spørsmål kan brukes med kommandoer som - VELG, INSERT, OPPDATER, SLETT.
- Skjøter får også sammen med forskjellige klausuler som - GRUPPE AV, SUBFRAG, HVOR, AGGREGATEFUNKSJONER, etc.
Anbefalt artikkel
Dette har vært en guide til Types of Joins i SQL. Her diskuterer vi de forskjellige typer sammenføyninger i SQL og fordelene sammen med eksempler. Du kan også gå gjennom andre foreslåtte artikler for å lære mer -
- Fordeler med NoSQL
- SQL Management Tools
- Database i SQL
- Jokertegn i SQL
- Topp 6 typer sammenføyninger i MySQL med eksempler