Uvod v vrste združitev v SQL

Klavzula Pridruži se v SQL služi namenu združevanja vrstic iz dveh ali več tabel. Postopek združevanja vrstic je odvisen od stolpca, ki je povezan z njimi. Štiri različne vrste združitev v SQL so poimenovane kot notranji, levi, desni in polni. Preden lahko začnemo uporabljati katero koli vrsto pridruževanja, potrebujemo RDBMS ali sistem za upravljanje relacijskih podatkovnih baz, kamor bomo naložili podatke. Eden zelo preprostih načinov za razumevanje povezav je uporaba Vennovega diagrama. Uporaba Vennovega diagrama omogoča enostavno merjenje vseh možnih in logičnih razmerij med različnimi nabori podatkov. Naj to razumemo s pomočjo Vennovega diagrama. Kasneje bomo razliko med temi razumeli z uporabo nekaterih praktičnih primerov. Predpostavimo, da sta v naši podatkovni bazi dva nabora podatkov, shranjena v obliki preglednice ena in druga tabela. Med obema tabelama obstaja nekaj povezave, ki je določena v obliki primarnega in koncepta tujega ključa. Če se pridružite dvema tabelama, ki imata nekakšen odnos, bo Vennov diagram predstavil scenarij,

Znesek tega prekrivanja bo določil obseg podobnosti med dvema tabelama, torej tabelo A in tabelo B. To pomeni, da je število zapisov iz tabele ena, ki se ujemajo z zapisi iz druge tabele, predstavljeno s prekrivanjem. To je ena podskupina podatkov. Na podlagi podskupine podatkov, ki jih zbiramo iz obeh tabel, dobimo štiri različne vrste združevanj.

Sintaksa pridruživanja:

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

Vrste združitev v SQL

  1. Notranji Pridružite se
  2. Leva združitev
  3. Pravica Pridružite se
  4. Popolna Pridružitev

Spodaj podrobno razlagamo različne vrste pridružitev.

1. Notranja združitev

V notranji povezavi izberemo le podatke, ki so skupni v obeh tabelah. (tj. 3. del tukaj) Da bi bilo bolj natančno, so vsi zapisi iz obeh tabel, ki se ujemajo s pogojem, omenjenim s pridruževanjem, izbrani v tej povezavi.

Sintaksa notranje povezave:

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

2. Levo Pridružite se

V levi povezavi izberemo vse podatke iz leve tabele in iz desne tabele izberemo samo nabor podatkov, ki se ujema s pogojem, omenjenim s pridružitvijo (tukaj območje 1 + 3)

Sintaksa leve pridruži:

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

3. Desno se pridruži

V desni povezavi izberemo vse podatke iz desne tabele, iz leve tabele pa samo nabor podatkov, ki se ujema s pogojem, omenjenim s pridružitvijo (tukaj 3 + 2)

Sintaksa desne povezave:

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

4. Polna Pridružitev

V celoti se vsi zapisi tvorijo tako, da sta tabeli združeni in izbrani, ne glede na pogoj, omenjen, če je združitev izpolnjena ali ne. (tukaj 1 + 2 + 3)

Sintaksa polnega pridruževanja:

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

Primeri združitev v SQL

Upoštevajte dve spodnji tabeli:

1. Primer ORDER_DETAILS

Naročilo v tabeli vsebuje podrobnosti naročila, ki ga je dal naročnik, kot so ID naročila, število naročenih izdelkov, znesek naročila, ID stranke, ki je naročilo oddala, in datum, ko je bilo naročilo oddano. Takšno tabelo lahko uporabi katero koli spletno mesto za shranjevanje podrobnosti naročila.

ORDER_DETAILS Tabela:

Številka naročila No_of_Items Naročilo_Stev Identifikacijska številka stranke Datum naročila
123 3 5500 P_1 20.01.2019
234 2 6500 P_12 10.2.2019
345 1 10000 P_13 27.05.2019
456 4 4000 P_14 7.7.2019
567 2 20656 P_1 15.12.2019
678 3 15000 P_11 27.10.2019

2. Primer CUSTOMER_DETAILS

Zdaj vzemimo še eno tabelo, v kateri bodo shranjeni podatki o stranki, da bomo lahko oddali naročilo na ustrezne naslove. Tabela kupcev bo zato vsebovala podatke o stranki, kot je ID stranke (cust_id), ki bo edinstven za vsako stranko. Zdaj sta ime in priimek shranjena v polju, imenovanem - Cust_First_Name in Cust_Last_Name. V ostala polja bodo shranjeni podatki, kot so e-poštni naslov, mobilna številka stranke, skupaj z naslovom, kodo PIN, mestom in državo. Tako lahko vidimo, da bo naša tabela kupcev videti nekako tako -

CUSTOMER_DETAILS Tabela:

Skrbništvo_d Cust_First_Name Cust_Last_Name PIN koda Naslov Cust_Mobile Mesto Država Skrbniška pošta
P_50 Alice Peter 111111 330 xyz ulica 123 Bangalore KA
P_12 James Dsouza 155511 Kolonija 420 abc 234 Hyderabad AP
P_15 Harry Lončar 123456 551 mg ceste 444 Noida Delhi
P_40 Miley Parker 111121 11 čevljev ceste 224 Bangalore KA
P_10 Herman Bush 123423 34. ulica ulice 432 Delhi Delhi
P_18 Dan rjav 134523 50. samostojna cesta 145 Gurugram Haryana
P_20 James Russel 111111 101 mg ceste 678 Bangalore KA
P_1 Miley Madison 100011 45. postavitev kaverappa 987 Chennai TN

Zdaj uporabimo ta primer, da razumemo funkcionalnost združitev. Vidimo, da je razmerje med dvema tabelama, tj. Tabelo ORDER_DETAILS in tabelo CUSTOMER_DETAILS, vzpostavljeno s ključem, ki ima vrednost ID-ja stranke, tj. Customer_Id, ki je primarni ključ v tabeli CUSTOMER_DETAILS in tuji ključ v ORDER_DETAILS tabela.

Preden nadaljujemo, je treba opozoriti na nekaj pomembnih točk:

  • Niso vse stranke v naši tabeli CUSTOMER_DETAILS postavile zahtevo za naročilo.
  • V vseh zahtevah za naročilo, ki jih imamo v naši tabeli ORDER_DETAILS, se nahaja customer_id, ki je prisoten v naši tabeli CUSTOMER_DETAILS, kar pomeni, da za nekatera naročila ni podrobnosti o stranki.

3. Notranja pridružitev

Inner Join vam bo dal samo tiste zapise, za katere je pogoj izpolnjen.

Poizvedba:

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

Izhod:

Cust_First_Name Skrbniška pošta No_of_Items Naročilo_Stev Datum naročila
Miley 3 5500 20.01.2019
James 2 6500 10.2.2019
Miley 2 20656 15.12.2019

4. Levo Pridružite se

Leva pridružitev vam bo dala vse zapise iz leve tabele, tj. Tabele CUSTOMER_DETAILS. Če naročnik ni naročil, bo vrnil ničelno vrednost za stolpce v tabeli ORDER_DETAILS.

Poizvedba:

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

Izhod:

Cust_First_Name Skrbniška pošta No_of_Items Naročilo_Stev Datum naročila
Alice NIČ NIČ NIČ
James 2 6500 10.2.2019
Harry NIČ NIČ NIČ
Miley NIČ NIČ NIČ
Herman NIČ NIČ NIČ
Dan NIČ NIČ NIČ
James NIČ NIČ NIČ
Miley 3 5500 20.01.2019
Miley 2 20656 15.12.2019

5. Desno se pridružite

Pravica, Pridružitev vam bo dala vse zapise iz desne tabele, tj. Tabele ORDER_DETAILS. Če za naročilo ni najti nobene evidence strank, bo vrnil ničelno vrednost za stolpce v tabeli CUSTOMER_DETAILS.

Poizvedba:

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

Izhod:

Cust_First_Name Skrbniška pošta No_of_Items Naročilo_Stev Datum naročila
Miley 3 5500 20.01.2019
James 2 6500 10.2.2019
NIČ NIČ 1 10000 27.05.2019
NIČ NIČ 4 4000 7.7.2019
Miley 2 20656 15.12.2019
NIČ NIČ 3 15000 27.10.2019

6. Polna Pridružitev

Full Join vam bo dal vse zapise, podane iz obeh tabel.

Poizvedba:

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

Izhod:

Cust_First_Name Skrbniška pošta No_of_Items Naročilo_Stev Datum naročila
Alice NIČ NIČ NIČ
James 2 6500 10.2.2019
Harry NIČ NIČ NIČ
Miley NIČ NIČ NIČ
Herman NIČ NIČ NIČ
Dan NIČ NIČ NIČ
James NIČ NIČ NIČ
Miley 3 5500 20.01.2019
Miley 2 20656 15.12.2019
NIČ NIČ 1 10000 27.05.2019
NIČ NIČ 4 4000 7.7.2019
NIČ NIČ 3 15000 27.10.2019

Prednosti združitev v SQL

  1. Hitrejša izvedba, kar pomeni hitrejše iskanje želenih stolpcev.
  2. Optimiziran, berljiv in razumljiv
  3. Povečanje zmogljivosti.

Zaključek

Kot je razvidno, uporabljamo JOINs, da polja iz različnih tabel pripnemo in dobimo.

  • Inner Join pridobiva zapise, kjer je izpolnjen dani pogoj.
  • Leva povezava vam bo dala vse vrstice iz leve tabele, tudi če se navedeni pogoj ne ujema.
  • Right Join vam bo dal vse vrstice iz leve tabele, tudi če se navedeni pogoj ne ujema.
  • Full Join vrne vse vrstice, če se v eni od tabel ujema ujemanje.
  • Poizvedbe za združevanje lahko uporabljate z ukazi, kot so - IZBERI, Vstavi, UPDATE, DELETE.
  • Pridruži se tudi skupaj z različnimi klavzulami, kot so - GROUP BY, SUB QUERIES, WHERE, AGREGATE FUNCTIONS itd.

Priporočeni članek

To je vodnik za Vrste združitev v SQL. Tukaj obravnavamo različne vrste združitev v SQL in njegove prednosti skupaj s primeri. Če želite izvedeti več, lahko preberete tudi druge naše predlagane članke -

  1. Prednosti NoSQL
  2. Orodja za upravljanje SQL
  3. Baza podatkov v SQL
  4. Nadomestni znak v SQL
  5. Prvih 6 vrst združitev v MySQL s primeri