Uvod u vrste pridruživanja u SQL-u

Klauzula pridruživanja u SQL-u služi za svrhu kombiniranja redaka iz dvije ili više tablica. Postupak kombiniranja redaka ovisi o stupcu koji je povezan s njima. Četiri različite vrste spajanja u SQL-u nazivaju se unutarnjim spajanjem, lijevo spajanje, desno pridruživanje i potpuno pridruživanje. Prije nego što zaista možemo započeti koristiti bilo koju vrstu spajanja, potreban nam je RDBMS ili sustav za upravljanje relacijskim bazama podataka u koji ćemo učitati podatke. Jedan od vrlo jednostavnih načina za razumijevanje spajanja je upotreba Vennovog dijagrama. Korištenje Vennovog dijagrama olakšava izračunavanje svih mogućih i logičnih odnosa između različitih skupova podataka. Neka nas razumijemo jedan po jedan koristeći Vennov dijagram. Kasnije ćemo shvatiti razliku između njih pomoću nekih praktičnih primjera. Pretpostavimo da u našoj bazi podataka postoje dva skupa podataka pohranjenih u obliku tablice jedna i druge tablice. Postoji neki odnos između dvije tablice koji je naveden u obliku primarnog ključa i koncepta stranog ključa. Ako se pridružite dvije tablice s nekom vrstom odnosa, Venn-ov dijagram scenarija će biti nešto poput,

Količina ovog preklapanja određuje opseg sličnosti dviju tablica, tj. Tablice A i tablice B. To znači da je broj zapisa iz tablice jedan, koji se podudaraju sa zapisima iz druge tablice, predstavljen odjeljkom preklapanja. Ovo je jedna podskup podataka. Dobivamo četiri različite vrste spajanja na temelju podskupina podataka koje prikupljamo iz dviju tablica.

Sintaksa pridruživanja:

SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Vrste pridruživanja u SQL-u

  1. Unutarnja Pridružite se
  2. Lijevo Pridružite se
  3. Pravo se pridružite
  4. Potpuno se pridružite

U nastavku detaljno objašnjavamo različite vrste pridruživanja.

1. Unutarnje spajanje

U unutarnjem spoju, biramo samo one podatke koji su zajednički u obje tablice. (tj. dio 3. ovdje) Da bi se to preciznije, svi zapisi iz obje tablice koji odgovaraju uvjetu navedenom s pridruživanjem, biraju u ovom pridruživanju.

Sintaksa unutarnjeg pridruživanja:

SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition

2. Lijevo spajanje

U lijevom spajanju odabiremo sve podatke iz lijeve tablice, a iz desne tablice odabiremo samo skup podataka koji se podudaraju sa stanjem navedenim s pridruživanjem (ovdje područje 1 + 3)

Sintaksa slijeva Pridružite se:

SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

3. Desno se pridružite

U desnom pridruživanju, mi odabiremo sve podatke iz desne tablice, a iz lijeve tablice odabiremo samo skup podataka koji odgovaraju stanju navedenom s pridruživanjem (ovdje 3 + 2)

Sintaksa desnog pridruživanja:

SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

4. Potpuno se pridružite

Potpuno spajanje, svi zapisi iz obje tablice spajaju se i odabiru bez obzira na navedeni uvjet s ispunjenjem pridruživanja ili ne. (ovdje 1 + 2 + 3)

Sintaksa punog pridruživanja:

SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Primjeri spajanja u SQL-u

Razmotrite dvije tablice dane u nastavku:

1. Primjer ORDER_DETAILS

Narudžba tablice sadrži detalje narudžbe koju je kupac postavio kao što su ID narudžbe, broj naručenih proizvoda, iznos narudžbe, ID kupca koji je poslao narudžbu i datum kada je narudžba poslana. Takvu vrstu tablice može koristiti bilo koja internetska stranica za pohranu detalja narudžbe.

ORDER_DETAILS Tablica:

ORDER_ID No_of_Items ORDER_AMOUNT CUSTOMER_ID Datum narudžbe
123 3 5500 P_1 2019/01/20
234 2 6500 P_12 2019/02/10
345 1 10000 P_13 2019/05/27
456 4 4000 P_14 2019/11/07
567 2 20.656 P_1 2019/12/15
678 3 15000 P_11 2019/10/27

2. Primjer CUSTOMER_DETAILS

Uzmimo još jednu tablicu u koju će se pohraniti detalji kupca kako bismo mogli isporučiti narudžbu na njihove adrese. Stoga će tablica korisnika imati detalje o kupcu kao što su korisnički ID (cust_id) koji će biti jedinstveni za svakog kupca. Sada su ime i prezime pohranjeni u polje zvano - Cust_First_Name i Cust_Last_Name. U ostala polja pohranjuju se podaci poput e-adrese, mobilni broj kupca zajedno s adresom, kodom Pincode, gradom i državom. Dakle, možemo vidjeti kako će naša tablica kupaca izgledati poput:

CUSTOMER_DETAILS Tablica:

Cust_Id Cust_First_Name Cust_Last_Name PIN kod Adresa Cust_Mobile Grad država Cust_email
P_50 Alice nestajati 111111 Ulica 330 xyz 123 Bangalore KA
P_12 James Dsouza 155511 Kolonija 420 abc 234 Hyderabad AP
P_15 harati Lončar 123456 551 mg ceste 444 Noida Delhi
P_40 Miley Parker 111121 11 metara ceste 224 Bangalore KA
P_10 Herman Grm 123423 34. ulica ulice 432 Delhi Delhi
P_18 Dan smeđ 134523 50. samostalna cesta 145 Gurugram Haryana
P_20 James Russel 111111 101 mg ceste 678 Bangalore KA
P_1 Miley Madison 100011 45. raspored kaverappa 987 Chennai TN

Koristeći ovaj primjer, razumjet ćemo funkcionalnost spajanja. Možemo vidjeti da je odnos između dvije tablice, tj. Tablice ORDER_DETAILS i tablice CUSTOMER_DETAILS uspostavljen ključem koji ima vrijednost id klijenta, tj. Customer_Id koji je primarni ključ u tablici CUSTOMER_DETAILS i strani ključ u ORDER_DETAILS tablica.

Nekoliko važnih stvari koje ovdje treba spomenuti prije nego što nastavimo jesu:

  • Nisu svi kupci u našoj tablici CUSTOMER_DETAILS postavili zahtjev za narudžbu.
  • Nisu svi zahtjevi za narudžbu koji se nalaze u našoj tablici ORDER_DETAILS sadržavali customer_id koji je prisutan u našoj tablici CUSTOMER_DETAILS, što znači da za neke narudžbe nema detalja o kupcu.

3. Unutarnje spajanje

Unutarnja pridruživanje dat će vam samo one zapise za koje je uvjet ispunjen.

upita:

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

Izlaz:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Datum narudžbe
Miley 3 5500 2019/01/20
James 2 6500 2019/02/10
Miley 2 20.656 2019/12/15

4. Pridružite se lijevoj strani

Lijevo pridruživanje dat će vam sve zapise s lijeve tablice, tj. Tablice CUSTOMER_DETAILS. Ako klijent nema narudžbe, vratit će nultu vrijednost za stupce u tablici ORDER_DETAILS.

upita:

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

Izlaz:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Datum narudžbe
Alice NULL NULL NULL
James 2 6500 2019/02/10
harati 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. Desno se pridružite

U redu, Join će vam dati sve zapise iz desne tablice, tj. Tablice ORDER_DETAILS. Ako za narudžbu nije pronađena nijedna evidencija korisnika, ona će vratiti nultu vrijednost za stupce u tablici CUSTOMER_DETAILS.

upita:

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

Izlaz:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Datum narudžbe
Miley 3 5500 2019/01/20
James 2 6500 2019/02/10
NULL NULL 1 10000 2019/05/27
NULL NULL 4 4000 2019/11/07
Miley 2 20.656 2019/12/15
NULL NULL 3 15000 2019/10/27

6. Potpuno se pridružite

Potpuno pridruživanje pružit će vam sve zapise navedene iz obje tablice.

upita:

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

Izlaz:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Datum narudžbe
Alice NULL NULL NULL
James 2 6500 2019/02/10
harati 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 10000 2019/05/27
NULL NULL 4 4000 2019/11/07
NULL NULL 3 15000 2019/10/27

Prednosti pridruživanja u SQL-u

  1. Brže izvršenje, što znači brže dohvaćanje željenih stupaca.
  2. Optimiziran, čitljiv i razumljiv
  3. Povećanje performansi.

Zaključak

Kao što je vidljivo, koristimo JOIN-ove za dodavanje i dobivanje polja iz različitih tablica.

  • Inner Join dohvaća zapise u kojima je ispunjen zadani uvjet.
  • Lijevo pridruživanje dat će vam sve redove s lijeve tablice, čak i kad se navedeni uvjet ne podudara.
  • Desno pridruživanje dat će vam sve redove s lijeve tablice, čak i kad se navedeni uvjet ne podudara.
  • Potpuno pridruživanje vraća sve redove kada postoji podudaranje u jednoj od tablica.
  • Upiti za pridruživanje mogu se koristiti s naredbama poput - SELECT, INSERT, UPDATE, DELETE.
  • Pridruživanja se također slažu sa različitim klauzulama poput - GRUPA PO, PODRAZUMIJEVANJE, GDJE, AGREGATNE FUNKCIJE itd.

Preporučeni članak

Ovo je vodič za Vrste pridruživanja u SQL-u. Ovdje smo raspravljali o različitim vrstama pridruživanja u SQL-u i njegovim prednostima, zajedno s primjerima. Možete i proći naše druge predložene članke da biste saznali više -

  1. Prednosti NoSQL-a
  2. Alati za upravljanje SQL-om
  3. Baza podataka u SQL-u
  4. Zamjenski znak u SQL-u
  5. Top 6 vrsta pridruživanja u MySQL-u s primjerima

Kategorija: