Úvod do typov pripojení v SQL

Klauzula na spojenie v SQL slúži na kombináciu riadkov z dvoch alebo viacerých tabuliek. Proces kombinovania riadkov závisí od stĺpca, ktorý sa ich týka. Štyri rôzne typy spojení v SQL sú pomenované ako vnútorné spojenie, ľavé spojenie, pravé spojenie a plné spojenie. Aby sme mohli skutočne začať používať akýkoľvek typ spojenia, potrebujeme RDBMS alebo systém správy relačných databáz, do ktorého načítame údaje. Jedným z veľmi jednoduchých spôsobov, ako porozumieť spojeniam, je použitie Venn diagramu. Pomocou Venn diagramu je možné ľahko odhadnúť všetky možné a logické vzťahy medzi rôznymi súbormi údajov. Pochopme to jeden po druhom pomocou Venn diagramu. Neskôr pochopíme rozdiel medzi nimi pomocou niekoľkých praktických príkladov. Predpokladajme, že v našej databáze sú dva súbory údajov uložené vo forme tabuľky jedna a tabuľky dva. Medzi týmito dvoma tabuľkami existuje určitý vzťah, ktorý je špecifikovaný vo forme primárneho kľúča a konceptu cudzieho kľúča. Ak spojíte dve tabuľky, ktoré majú nejaký vzťah, bude reprezentácia scenára Vennovho diagramu niečo podobné,

Výška tohto prekrývania určí rozsah podobnosti medzi dvoma tabuľkami, tj tabuľkou A a tabuľkou B. To znamená, že počet záznamov z tabuľky 1, ktoré sa zhodujú so záznamami z tabuľky 2, predstavuje časť prekrývania. Toto je jedna podmnožina údajov. Dostávame štyri rôzne typy spojení na základe podmnožiny údajov, ktoré vyberieme z týchto dvoch tabuliek.

Syntax spojenia:

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

Typy pripojení v SQL

  1. Vnútorné pripojenie
  2. Ľavé pripojenie
  3. Správne pripojenie
  4. Plné pripojenie

Ďalej uvádzame rôzne typy pripojení podrobne.

1. Vnútorné pripojenie

Pri vnútornom spojení vyberáme iba údaje, ktoré sú bežné v oboch tabuľkách. (tj časť 3 tu) Aby sa to spresnilo, v tomto spojení sa vyberú všetky záznamy z oboch tabuliek, ktoré zodpovedajú stavu uvedenému pri spojení.

Syntax vnútorného spojenia:

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

2. Ľavé pripojenie

Pri ľavom spojení vyberieme všetky údaje z ľavej tabuľky az pravej tabuľky vyberieme iba množinu údajov, ktorá zodpovedá stavu uvedenému pri spojení (tu oblasť 1 + 3)

Syntax ľavého spojenia:

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

3. Správne pripojenie

Pri správnom spojení vyberieme všetky údaje z pravej tabuľky az ľavej tabuľky vyberieme iba množinu údajov, ktorá zodpovedá stavu uvedenému pri pripojení (tu 3 + 2)

Syntax pravého spojenia:

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

4. Úplné pripojenie

Pri úplnom spojení sa všetky záznamy z oboch tabuliek zlúčia a vyberú bez ohľadu na stav uvedený pri splnení alebo nesplnení spojenia. (tu 1 + 2 + 3)

Syntax úplného spojenia:

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

Príklady spojení v SQL

Zvážte nasledujúcu tabuľku:

1. Príklad ORDER_DETAILS

Objednávka v tabuľke obsahuje podrobnosti o objednávke zadanej zákazníkom, ako je ID objednávky, počet objednaných produktov, výška objednávky, ID zákazníka, ktorý objednávku vydal, a dátum, kedy bola objednávka zadaná. Takýto stôl môže použiť ktorýkoľvek webový server online na uloženie podrobností o objednávke.

Tabuľka ORDER_DETAILS:

Číslo objednávky No_of_Items ORDER_AMOUNT CUSTOMER_ID Dátum objednávky
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. Príklad CUSTOMER_DETAILS

Teraz si vezmime ďalšiu tabuľku, v ktorej budú uložené informácie o zákazníkovi, aby sme mohli doručiť objednávku na ich príslušné adresy. Zákaznícka tabuľka bude preto obsahovať údaje o zákazníkovi, ako napríklad ID zákazníka (cust_id), ktoré budú jedinečné pre každého zákazníka. Teraz sa meno a priezvisko uložia do poľa s názvom - Cust_First_Name a Cust_Last_Name. V ostatných poliach sa uložia informácie, ako napríklad e-mailové identifikačné číslo, číslo mobilného telefónu zákazníka spolu s adresou, kódom PIN, mestom a štátom. Takže vidíme, že náš Zákaznícky stôl bude vyzerať asi takto:

Tabuľka CUSTOMER_DETAILS:

Cust_Id Cust_First_Name Cust_Last_Name PIN kód adresa Cust_Mobile veľkomesto Štát Cust_email
P_50 Alice Peter 111111 Ulica 330 xyz 123 Bangalore KA
P_12 james Dsouza 155511 Kolónia 420 abc 234 Hyderabad AP
P_15 pustošiť hrnčiar 123456 551 mg cesty 444 Noida Delhi
P_40 Miley parker 111121 11 stôp cesty 224 Bangalore KA
P_10 Herman krík 123423 34. ulica thanco 432 Delhi Delhi
P_18 bóje hnedý 134523 50. nezávislá cesta 145 Gurugram Haryana
P_20 james Russel 111111 101 mg cesta 678 Bangalore KA
p_1 Miley Madison 100011 45. usporiadanie kaverappa 987 Chennai TN

Teraz pomocou tohto príkladu porozumieme funkčnosti pripojení. Vidíme, že vzťah medzi týmito dvoma tabuľkami, tj tabuľkou ORDER_DETAILS a tabuľkou CUSTOMER_DETAILS, je vytvorený kľúčom, ktorý má hodnotu id zákazníka, tj Customer_Id, ktorý je primárnym kľúčom v tabuľke CUSTOMER_DETAILS a cudzím kľúčom v tabuľke ORDER_DETAILS tabuľka.

Predtým, ako budeme pokračovať, je potrebné poznamenať niekoľko dôležitých bodov:

  • Nie všetci zákazníci v našej tabuľke CUSTOMER_DETAILS podali žiadosť o objednávku.
  • Nie všetky požiadavky na objednávku, ktoré máme v našej tabuľke ORDER_DETAILS, majú customer_id, ktorý sa nachádza v našej tabuľke CUSTOMER_DETAILS, čo znamená, že pre niektoré objednávky nie sú žiadne podrobnosti o zákazníkovi.

3. Vnútorné pripojenie

Vnútorné pripojenie vám poskytne iba tie záznamy, pre ktoré je splnená podmienka.

Dopyt:

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

Výkon:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Dátum objednávky
Miley 3 5500 01/20/2019
james 2 6500 02.10.2019
Miley 2 20656 12/15/2019

4. Ľavé pripojenie

Ľavé pripojenie vám poskytne všetky záznamy z ľavej tabuľky, tj tabuľku CUSTOMER_DETAILS. Ak zákazník neurobí žiadne objednávky, vráti nulovú hodnotu pre stĺpce v tabuľke ORDER_DETAILS.

Dopyt:

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

Výkon:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Dátum objednávky
Alice NULOVÝ NULOVÝ NULOVÝ
james 2 6500 02.10.2019
pustošiť NULOVÝ NULOVÝ NULOVÝ
Miley NULOVÝ NULOVÝ NULOVÝ
Herman NULOVÝ NULOVÝ NULOVÝ
bóje NULOVÝ NULOVÝ NULOVÝ
james NULOVÝ NULOVÝ NULOVÝ
Miley 3 5500 01/20/2019
Miley 2 20656 12/15/2019

5. Správne pripojenie

Správne, pripojenie vám poskytne všetky záznamy zo správnej tabuľky, tj z tabuľky ORDER_DETAILS. Ak pre objednávku nie sú nájdené žiadne záznamy zákazníkov, vráti nulovú hodnotu pre stĺpce v tabuľke CUSTOMER_DETAILS.

Dopyt:

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

Výkon:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Dátum objednávky
Miley 3 5500 01/20/2019
james 2 6500 02.10.2019
NULOVÝ NULOVÝ 1 10000 05/27/2019
NULOVÝ NULOVÝ 4 4000 11.07.2019
Miley 2 20656 12/15/2019
NULOVÝ NULOVÝ 3 15000 10/27/2019

6. Úplné pripojenie

Úplné pripojenie vám poskytne všetky záznamy uvedené v oboch tabuľkách.

Dopyt:

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

Výkon:

Cust_First_Name Cust_email No_of_Items ORDER_AMOUNT Dátum objednávky
Alice NULOVÝ NULOVÝ NULOVÝ
james 2 6500 02.10.2019
pustošiť NULOVÝ NULOVÝ NULOVÝ
Miley NULOVÝ NULOVÝ NULOVÝ
Herman NULOVÝ NULOVÝ NULOVÝ
bóje NULOVÝ NULOVÝ NULOVÝ
james NULOVÝ NULOVÝ NULOVÝ
Miley 3 5500 01/20/2019
Miley 2 20656 12/15/2019
NULOVÝ NULOVÝ 1 10000 05/27/2019
NULOVÝ NULOVÝ 4 4000 11.07.2019
NULOVÝ NULOVÝ 3 15000 10/27/2019

Výhody pripojenia v SQL

  1. Rýchlejšie vykonanie, čo znamená rýchlejšie načítanie požadovaných stĺpcov.
  2. Optimalizované, čitateľné a pochopiteľné
  3. Zvýšenie výkonu.

záver

Ako vidno, používame JOIN na pripojenie a získanie polí z rôznych tabuliek.

  • Vnútorné spojenie vyvolá záznamy, kde je daná podmienka splnená.
  • Ľavé spojenie vám poskytne všetky riadky z ľavej tabuľky, aj keď daná podmienka nezodpovedá.
  • Right Join vám poskytne všetky riadky z ľavej tabuľky, aj keď daná podmienka nezodpovedá.
  • Úplné spojenie vráti všetky riadky, keď existuje zhoda v jednej z tabuliek.
  • Pripojiť dotazy môžu byť použité s príkazmi ako - SELECT, INSERT, UPDATE, DELETE.
  • Členovia sa tiež stotožňujú s rôznymi klauzulami ako - SKUPINA PODĽA, PODOBNÉ OTÁZKY, KDE, AGREGÁTOVÉ FUNKCIE atď.

Odporúčaný článok

Toto bol sprievodca Typy pripojení v SQL. Tu diskutujeme rôzne typy spojení v SQL a jeho výhody spolu s príkladmi. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. Výhody NoSQL
  2. SQL Management Tools
  3. Databáza v SQL
  4. Zástupný znak v SQL
  5. Top 6 typov spojení v MySQL s príkladmi