Úvod do pripojení v MySQL

MySQL Joins hrá dôležitú úlohu, keď musíme spojiť dve tabuľky spolu na základe jednej alebo viacerých spoločných hodnôt zdieľaných dvoma tabuľkami.

Príklad : Uvažujme, že máme dve tabuľky, jedna je zamestnanecká tabuľka pozostávajúca z employee_id, phn_no, platu a oddelenia. Ďalšou tabuľkou je tabuľka adries, ktorá sa skladá z employee_id a adresy. Ak potrebujeme zistiť employee_id, department a address, potom sa musíme pripojiť k obom tabuľkám zdieľajúcim spoločné pole ako employee_id.

Dopyt :

SELECT e1.employee_id, e1.department, a1.address
FROM employee e1
INNER JOIN address a1
ON e1.employee_id = a1.employee_id;

Top 6 typov spojení v MySQL

V MySQL existujú rôzne typy spojení. Nižšie uvedené spojenia sa stretávajú pri každodennom používaní a sú najužitočnejšie pri vykonávaní mnohých otázok v reálnych prípadoch.

  1. Vnútorné pripojenie
  2. Ľavé pripojenie
  3. Pravé pripojenie
  4. Úplné vonkajšie spojenie
  5. Self-join
  6. Krížové spojenie

1. Vnútorné pripojenie

Vnútorné spojenie vráti hodnotu, ktorá sa zhoduje v oboch tabuľkách.

Táto časť prichádza do výstupu, ako je znázornené na obrázku vyššie.

Príklad č. 1:

emp_id oddelenie plat
1001 IT 1000
1002 CSR 800
1003 IT 2000

Toto je tabuľka zamestnancov.

emp_id adresa
1002 Delhi
1003 Bangalore
1005 Bbsr

Tu je tabuľka adries týchto zamestnancov. Primárny kľúč zamestnanca nadradenej tabuľky emp_id sa používa ako cudzí kľúč v tabuľke adries, ktorá je podradenou tabuľkou. Pomocou vnútorného spojenia nájdeme emp_id, oddelenie a adresu jedného zamestnanca. Pretože vnútorné stavy spojenia Vyvolá záznamy, ktoré sú prítomné / bežné v oboch tabuľkách.

Dopyt:

SELECT emp.emp_id, emp.department, ads.address
FROM employee AS emp
INNER JOIN address AS ads
ON emp.emp_id = ads.emp_id;

Pomenovanie tabuľky dávame aliasu, aby sme sa vyhli časovo náročnejším. Vo vyššie uvedenom dotaze používame pre tabuľku zamestnancov alias „emp“ a pre tabuľku adries „ads“.

Výkon:

emp_id oddelenie adresa
1002 CSR Delhi
1003 IT Bangalore

Pretože vo vyššie uvedenom príklade boli emp_id 1002 a 1003 spoločné medzi oboma tabuľkami, príkaz vnútorného spojenia vyvolá výstup iba pre týchto zamestnancov.

Príklad č. 2:

Tu máme 2 tabuľky, tabuľka1 a tabuľka2. Obe tabuľky pozostávajú z jedného atribútu ako stĺpec A, respektíve stĺpec B.

Stôl 1

Stĺpec A
1
1
2
3
4

Table2

Stĺpec B
1
2
2
3
3
5

Dopyt:

If we apply inner join here,
SELECT * FROM Table1
INNER JOIN table2
ON columnA = columnB;

Výkon:

Stĺpec A Stĺpec B
1 1
1 Nulový
2 2
Nulový 2
3 3
Nulový 3

2. Ľavé pripojenie

Toto spojenie vráti všetky záznamy z ľavej tabuľky a priradené záznamy z pravej tabuľky.

Ako ukazuje obrázok vyššie, pozostáva zo všetkých záznamov tabuľky A a spoločných záznamov z A a B.

Príklad č. 1:

CUSTOMER_ID názov veľkomesto
1 Harish Cuttack
2 David Bangalore
3 Mahesh Bhubaneswar
4 Sam Kalkata

Tabuľka zákazníkov:

Číslo objednávky čiastka CUSTOMER_ID
19868 7575, 00 4
19976 434.654, 00 2
99680 7457, 00 3

Tabuľka objednávok:

Dozvieme sa customer_id, name a order_id spojené pomocou ľavého spojenia.

Dopyt:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
LEFT JOIN order ord
ON cust.customer_id = ord.customer_id;

Výkon:

CUSTOMER_ID názovČíslo objednávky
1 Harish nulový
2 David 19976
3 Mahesh 99680
4 Sam 19868

Keď sme diskutovali o tomto ľavom spojení, stiahlo sa všetky zákaznícke ID z tabuľky zákazníkov a spoločné medzi oboma tabuľkami. Pre customer_id '1' sa zobrazí ako 'null', pretože customer_id '1' nie je v tabuľke objednávok.

Príklad č. 2:

Tu máme 2 tabuľky, tabuľka1 a tabuľka2. Obe tabuľky pozostávajú z jedného atribútu ako stĺpec A, respektíve stĺpec B.

Stôl 1

Stĺpec A
1
1
2
2
3

Table2

Stĺpec B
1
2
2
4
4
5
5

Dopyt:

If we apply left join on above 2 tables,
SELECT * FROM table1
LEFT JOIN table2
ON columnA = columnB;

Stĺpec A Stĺpec B
1 1
1 Nulový
2 2
2 2
3 Nulový

3. Správne pripojenie

Toto spojenie vráti všetky záznamy z pravej tabuľky a zodpovedajúce z ľavej tabuľky.

Vyššie uvedený diagram ukazuje, že načíta všetky záznamy z tabuľky B a spoločný, ktorý je prítomný v oboch tabuľkách.

Príklad:

CUSTOMER_ID názov veľkomesto
3 Mahesh Bhubaneswar
4 Sam Kalkata
5 baran Mumbai

Tabuľka zákazníkov:

Číslo objednávky čiastka CUSTOMER_ID
19868 7575, 00 4
19976 434.654, 00 2
99680 7457, 00 3

Tabuľka objednávok:

Pomocou správneho pripojenia zistíme customer_id, name a order_id.

Dopyt:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
RIGHT JOIN order ord
ON cust.customer_id = ord.customer_id;

Výkon:

CUSTOMER_ID názov Číslo objednávky
2 nulový 19976
3 Mahesh 99680
4 Sam 19868

Keď sme vykonali správne pripojenie tu, dopyt vyvolal všetky zákaznícke ID z tabuľky objednávok a bežných záznamov, ktoré sú v oboch tabuľkách.

4. Plný vonkajší spoj

Úplné vonkajšie spojenie vráti všetky záznamy z oboch tabuliek, ak existuje spoločné pole zdieľané.

Príklad:

CUSTOMER_ID názov veľkomesto
3 Mahesh Bhubaneswar
4 Sam Kalkata
5 baran Mumbai

Tabuľka zákazníkov:

Číslo objednávky čiastka CUSTOMER_ID
19868 7575, 00 4
19976 434.654, 00 2
99680 7457, 00 3

Tabuľka objednávok:

Dozvieme sa customer_id, name a order_id s ním spojené pomocou úplného vonkajšieho spojenia.

Dopyt:

SELECT cust.Customer_id, cust.Name, ord.Order_id
FROM customer cust
FULL OUTER JOIN order ord
ON cust.customer_id = ord.customer_id;

Výkon:

CUSTOMER_ID názov Číslo objednávky
2 nulový 19976
3 Mahesh 99680
4 Sam 19868
5 baran nulový

Toto úplné vonkajšie spojenie vyvolalo všetky zákaznícke ID z tabuľky zákazníkov, ako aj z tabuľky objednávok.

5. Vlastné pripojenie

Samostatné pripojenie je pravidelné pripojenie a tu sa tabuľka spája iba so sebou.

emp_id názov Telefonne cislo veľkomesto Krajina
1001 R. Madhvan 9687687698 Bangalore India
1002 Gobu Sharma 9856453423 Pune India
1003 Zničte Das 8765456787 Mumbai India
1004 Amit Rout 4567788635 Pune India
1005 Sambit Kar 8789887873 Hyderabad India

Tu je tabuľka zamestnancov pozostávajúca z niekoľkých polí. Zistíme zamestnancov, ktorí žijú v rovnakom meste.

Dopyt :

SELECT e1.name AS Employee_name1, e2.name AS employee_name2, e1.City
FROM employee e1, employee e2
WHERE e1.name e2.name
AND e1.city = e2.city;

Výstup :

Employee_name1 Employee_name2 e1.city
Gobu Sharma Amit Rout Pune
Amit Rout Gobu Sharma Pune

6. Cross Join

Toto spojenie vedie k výsledku, keď sa počet riadkov v prvej tabuľke vynásobí riadkami v druhej tabuľke. Tento výsledok sa nazýva karteziánsky výrobok. Ak použijeme klauzulu WHERE s týmto spojením, bude to fungovať ako vnútorné spojenie.

Príklad:

Prod_id Meno Produktu Prod_unit Company_id
1 Chex mix ks 12
2 Cheez-it ks 15
3 Sušienka ks 16

Tabuľka produktov :

Company_id Meno spoločnosti Company_city
15 foodies Delhi
16 Jack n Jill Cuttack
17 prírodné Bangalore

Tabuľka spoločnosti :

Na tieto tabuľky použijeme krížové spojenie.

Dopyt :

SELECT p.product_name, p.prod_unit, c.company_name
FROM product p
CROSS JOIN company c;

Výstup :

p.product_name p.prod_unit c.company_name
Chex mix ks foodies
Cheez-it ks foodies
Sušienka ks foodies
Chex mix ks Jack n Jill
Cheez-it ks Jack n Jill
Sušienka ks Jack n Jill
Chex mix ks prírodné
Cheez-it ks prírodné
Sušienka ks prírodné

záver

Význam týchto spojení je veľmi dôležitý pri práci v scenároch v reálnom čase, ako aj v niektorých ďalších technológiách. Pri vizualizáciách ako Tableau a Power BI hrajú spojenia dôležitú úlohu. Štruktúrovaná prax je kľúčom k začleneniu týchto nových techník a zručností.

Odporúčaný článok

Toto je sprievodca pripojením k MySQL. Tu diskutujeme o šiestich hlavných typoch spojení v MySQL ako Inner, Left, Right, Full, Self, Cross a ich príklady spolu s dopytom a výstupom. Viac informácií nájdete aj v našich navrhovaných článkoch -

  1. Top 10 príkazov MySQL
  2. Úvod do MySQL Operators
  3. MySQL vs SQLite Top 14 Porovnanie
  4. Top 23 funkcií MySQL String
  5. Vysvetlite príkaz Insert v MySQL s príkladmi
  6. Top 6 rozdielov primárneho kľúča od cudzieho kľúča