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

  1. Indre med
  2. Venstre bli med
  3. Høyre med
  4. 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

  1. Raskere utførelse som betyr raskere henting av ønskede kolonner.
  2. Optimalisert, lesbar og forståelig
  3. Ø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 -

  1. Fordeler med NoSQL
  2. SQL Management Tools
  3. Database i SQL
  4. Jokertegn i SQL
  5. Topp 6 typer sammenføyninger i MySQL med eksempler