Bevezetés az illesztés típusaiba az SQL-ben

Az SQL csatlakozási záradéka arra szolgál, hogy két vagy több táblából sorokat egyesítsen. A sorok egyesítésének folyamata egy hozzájuk kapcsolódó oszloptól függ. Az SQL négy különféle csatlakozásának neve belső csatlakozás, bal csatlakozás, jobb csatlakozás és teljes csatlakozás. Mielőtt bármilyen típusú csatlakozást használni tudnánk, szükségünk van egy RDBMS-re vagy egy relációs adatbázis-kezelő rendszerre, ahol betölti az adatokat. A csatlakozások megértésének egyik nagyon egyszerű módja a Venn-diagram használata. A Venn diagram használata megkönnyíti az összes lehetséges és logikai kapcsolat felmérését a különféle adatkészletek között. Megértjük ezt egyenként a Venn-diagram segítségével. Később néhány gyakorlati példával megértjük e különbségeket. Tegyük fel, hogy adatbázisunkban két adatkészlet található, amelyeket az 1. és a 2. táblázat formájában tárolunk. A két táblázat között van valamilyen kapcsolat, amelyet egy elsődleges kulcs és egy idegen kulcs koncepció formájában határoznak meg. Ha két táblázathoz csatlakozik, amelyek valamilyen kapcsolatban állnak, akkor a forgatókönyv Venn diagram ábrázolása valami hasonló lesz,

Ennek az átfedésnek a mértéke határozza meg a hasonlóság mértékét a két táblázat, azaz az A. táblázat és a B. táblázat között. Ez azt jelenti, hogy az első táblából származó rekordok számát, amelyek megegyeznek a második táblázat rekordjaival, az átfedési szakasz képviseli. Ez az adatok egy részhalmaza. A két táblából kiválasztott adathalmaz alapján négy különféle csatlakozást kapunk.

Csatlakozás szintaxisa:

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

Csatlakozás típusai az SQL-ben

  1. Belső összekapcsolás
  2. Balra csatlakozz
  3. Jobb csatlakozás
  4. Teljes csatlakozás

Az alábbiakban részletesen ismertetjük a különféle csatlakozásokat.

1. Belső csatlakozás

Belső összekapcsoláskor csak azokat az adatokat választjuk ki, amelyek mindkét táblázatban közösek. (azaz a 3. rész itt) Annak pontosítása érdekében, ebben az összekapcsolásban mind a két tábla összes rekordját felveszik, amely megfelel az egyesítésben említett feltétellel.

A belső csatlakozás szintaxisa:

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

2. Balra csatlakozzon

A bal oldali csatlakozásnál az összes adatot a bal oldali táblából választjuk ki, és a jobb oldali táblából csak azt az adatkészletet választjuk ki, amely megegyezik a csatlakozásnál említett feltételekkel (itt az 1 + 3 terület).

A bal oldali szintaxis:

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

3. Jobb csatlakozás

A jobb oldali csatlakozásnál az összes adatot a jobb oldali táblából választjuk ki, és a bal oldali táblából csak azt az adatkészletet választjuk ki, amely megfelel a csatlakozásnál említett feltételnek (itt 3 + 2).

Jobb csatlakozás szintaxisa:

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

4. Teljes csatlakozás

Teljes csatlakozás esetén a táblázatok összes rekordját egyesítik és kiválasztják, függetlenül attól a feltételtől, hogy a csatlakozás teljesült-e vagy sem. (itt 1 + 2 + 3)

A teljes csatlakozás szintaxisa:

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

Példák az SQL csatlakozásaira

Vegyük figyelembe az alábbi két táblázatot:

1. Példa egy ORDER_DETAILS-ra

A táblás megrendelés tartalmazza az ügyfél által leadott megrendelés részleteit, például a megrendelés azonosítóját, a megrendelt termékek számát, a megrendelés összegét, a megrendelést megrendelő azonosítóját és a megrendelés dátumát. Az ilyen típusú táblákat bármely online weboldal felhasználhatja a megrendelés részleteinek tárolására.

ORDER_DETAILS táblázat:

Rendelés azonosító No_of_Items Rendelési mennyiség Ügyfél-azonosító Rendelés dátuma
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 20656 p_1 2019/12/15
678 3 15000 P_11 2019/10/27

2. Példa a CUSTOMER_DETAILS-ra

Vegyünk egy másik táblát, amelyben az ügyfél adatai tárolódnak, hogy a megrendelést a megfelelő címre tudjuk szállítani. Ezért az ügyféltáblázatnak tartalmaznia kell az ügyfél adatait, például az ügyfél azonosítóját (cust_id), amely minden ügyfél számára egyedi. Most az utónévet és a vezetéknevet a Cust_First_Name és Cust_Last_Name nevű mezőben tárolják. A többi mező az információkat, például az e-mail azonosítót, az ügyfél mobilszámát, a címet, a PIN kódot, a várost és az államot tárolja. Így láthatjuk, hogy Ügyfélszolgálatunk úgy néz ki, mint -

CUSTOMER_DETAILS táblázat:

CUST_ID Cust_First_Name Cust_Last_Name PIN-kód Cím Cust_Mobile Város Állapot Cust_email
P_50 Alice Péter 111111 330 xyz utca 123 Bangalore KA
P_12 James Dsouza 155511 420 abc kolónia 234 Hyderabad AP
P_15 Harry Fazekas 123456 551 mg út 444 Noida Delhi
P_40 Miley Parker 111121 11 lábnyi út 224 Bangalore KA
P_10 Herman Bokor 123423 34 th thanco Street 432 Delhi Delhi
P_18 Dan Barna 134523 50- es független út 145 Gurugram Haryana
P_20 James Russel 111111 101 mg út 678 Bangalore KA
p_1 Miley Madison 100011 45. kaverappa elrendezés 987 Chennai TN

Most ezt a példát használva értsük meg a csatlakozások funkcionalitását. Láthatjuk, hogy a két tábla, azaz az ORDER_DETAILS tábla és a CUSTOMER_DETAILS tábla kapcsolatát a kulcs határozza meg, amelynek az ügyfél azonosítója van, azaz a Customer_Id, amely elsődleges kulcs a CUSTOMER_DETAILS táblában, és egy idegen kulcs a ORDER_DETAILS táblázat.

Néhány fontos szempont, amelyet itt meg kell említeni, mielőtt folytatnánk:

  • A (z) CUSTOMER_DETAILS táblázatban szereplő összes ügyfél nem tett megrendelést.
  • Nem minden ORDER_DETAILS táblázatban található megrendelési igényünknek van olyan ügyfél-azonosítója, amely megtalálható a CUSTOMER_DETAILS táblánkban, ami azt jelenti, hogy egyes megrendelések esetében nincs részlete az ügyfélnek.

3. Belső csatlakozás

A Belső Csatlakozás csak azokat a rekordokat fogja megadni, amelyek teljesülnek a feltételnek.

Lekérdezés:

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

Kimenet:

Cust_First_Name Cust_email No_of_Items Rendelési mennyiség Rendelés dátuma
Miley 3 5500 2019/01/20
James 2 6500 2019/02/10
Miley 2 20656 2019/12/15

4. Balra csatlakozás

A Bal csatlakozás megadja az összes rekordot a bal oldali táblából, azaz a CUSTOMER_DETAILS táblából. Ha az ügyfél nem ad megrendelést, akkor az ORDER_DETAILS táblázat oszlopjaihoz nulla értéket ad vissza.

Lekérdezés:

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

Kimenet:

Cust_First_Name Cust_email No_of_Items Rendelési mennyiség Rendelés dátuma
Alice NULLA NULLA NULLA
James 2 6500 2019/02/10
Harry NULLA NULLA NULLA
Miley NULLA NULLA NULLA
Herman NULLA NULLA NULLA
Dan NULLA NULLA NULLA
James NULLA NULLA NULLA
Miley 3 5500 2019/01/20
Miley 2 20656 2019/12/15

5. Jobb csatlakozás

Igaz, a Join megadja az összes rekordot a jobb táblából, azaz az ORDER_DETAILS táblából. Ha a megrendeléshez nem található ügyfélrekord, akkor a CUSTOMER_DETAILS táblázat oszlopjai nullértékét adják meg.

Lekérdezés:

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

Kimenet:

Cust_First_Name Cust_email No_of_Items Rendelési mennyiség Rendelés dátuma
Miley 3 5500 2019/01/20
James 2 6500 2019/02/10
NULLA NULLA 1 10000 2019/05/27
NULLA NULLA 4 4000 2019/11/07
Miley 2 20656 2019/12/15
NULLA NULLA 3 15000 2019/10/27

6. Teljes csatlakozás

A Teljes Csatlakozás megadja az összes rekordot, amelyet mind a táblázatok tartalmaznak.

Lekérdezés:

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

Kimenet:

Cust_First_Name Cust_email No_of_Items Rendelési mennyiség Rendelés dátuma
Alice NULLA NULLA NULLA
James 2 6500 2019/02/10
Harry NULLA NULLA NULLA
Miley NULLA NULLA NULLA
Herman NULLA NULLA NULLA
Dan NULLA NULLA NULLA
James NULLA NULLA NULLA
Miley 3 5500 2019/01/20
Miley 2 20656 2019/12/15
NULLA NULLA 1 10000 2019/05/27
NULLA NULLA 4 4000 2019/11/07
NULLA NULLA 3 15000 2019/10/27

A csatlakozások előnyei az SQL-ben

  1. Gyorsabb végrehajtás, ami azt jelenti, hogy a kívánt oszlopok gyorsabban letöltendők.
  2. Optimalizált, olvasható és érthető
  3. Növekszik a teljesítmény.

Következtetés

Amint láttuk, a JOIN-okat használjuk a táblák hozzáadásához és lekéréséhez.

  • A Belső Csatlakozás rekordokat hoz le, ahol az adott feltétel teljesül.
  • A Bal csatlakozás megadja az összes sort a bal oldali asztalról, még akkor is, ha az adott feltétel nem egyezik.
  • A Jobb csatlakozás megadja az összes sort a bal oldali asztalról, még akkor is, ha az adott feltétel nem egyezik.
  • A Full Join minden sort visszaad, ha az egyik táblázatban egyezés található.
  • A csatlakozási lekérdezések olyan parancsokkal használhatók, mint - SELECT, INSERT, UPDATE, DELETE.
  • A csatlakozások különféle záradékokkal is bírnak, mint például - GROUP BY, SUB QUERIES, WHERE, AGGREGATE FUNKCIÓK, stb.

Ajánlott cikk

Ez egy útmutató az SQL csatlakozástípusaihoz. Itt az SQL különféle csatlakozásait és annak előnyeit, valamint a példákat tárgyaljuk. A további javasolt cikkeken keresztül további információkat is megtudhat -

  1. A NoSQL előnyei
  2. SQL felügyeleti eszközök
  3. Adatbázis SQL-ben
  4. Helyettesítő karakter az SQL-ben
  5. A MySQL 6 legfontosabb csatlakozási típusa példákkal