Ú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.
- Vnútorné pripojenie
- Ľavé pripojenie
- Pravé pripojenie
- Úplné vonkajšie spojenie
- Self-join
- 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 -
- Top 10 príkazov MySQL
- Úvod do MySQL Operators
- MySQL vs SQLite Top 14 Porovnanie
- Top 23 funkcií MySQL String
- Vysvetlite príkaz Insert v MySQL s príkladmi
- Top 6 rozdielov primárneho kľúča od cudzieho kľúča