Úvod do spojení v MySQL

MySQL Joins hraje důležitou roli, když musíme spojit dvě tabulky dohromady na základě jedné nebo více společných hodnot sdílených dvěma tabulkami.

Příklad : Uvažujme, že máme dvě tabulky, jedna je tabulka zaměstnanců sestávající z Employ_id, phn_no, platu a oddělení. Další tabulkou je tabulka adres, která se skládá z employee_id a adresy. Pokud potřebujeme zjistit zaměstnance_id, oddělení a adresu, musíme se připojit k oběma tabulkám, které sdílejí společné pole, jako zaměstnanec_id.

Dotaz :

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

Top 6 typů spojení v MySQL

V MySQL existují různé typy spojení. Níže uvedené spojení se objevují v každodenním použití a jsou nejužitečnější při provádění mnoha dotazů v reálných případech.

  1. Vnitřní spojení
  2. Připojte se vlevo
  3. Správné připojení
  4. Plné vnější spojení
  5. Připojte se
  6. Cross cross

1. Vnitřní připojení

Vnitřní spojení vrátí hodnotu, která se shoduje v obou tabulkách.

Tato část přichází do výstupu, jak je znázorněno na obrázku výše.

Příklad č. 1:

Emp_id oddělení Plat
1001 TO 1000
1002 CSR 800
1003 TO 2000

Toto je tabulka zaměstnanců.

Emp_id Adresa
1002 Dillí
1003 Bangalore
1005 Bbsr

Zde je tabulka adres těchto zaměstnanců. Primární klíč zaměstnance mateřské tabulky emp_id se používá jako cizí klíč v tabulce adres, která je podřízenou tabulkou. Pomocí vnitřního spojení najdeme emp_id, oddělení a adresu jednoho zaměstnance. Protože vnitřní stavy spojení Vyvolává záznamy, které jsou přítomny / běžné v obou tabulkách.

Dotaz:

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

Název tabulky přidělujeme aliasu, abychom se vyhnuli časově náročnějším. Ve výše uvedeném dotazu používáme alias 'emp' pro tabulku zaměstnanců a 'ads' pro tabulku adres.

Výstup:

Emp_id oddělení Adresa
1002 CSR Dillí
1003 TO Bangalore

Protože ve výše uvedeném příkladu byly emp_id 1002 a 1003 běžné mezi oběma tabulkami, příkaz vnitřní spojení vyvolá výstup pouze pro tyto zaměstnance.

Příklad č. 2:

Zde máme 2 tabulky, tabulka1 a tabulka2. Obě tabulky se skládají z jednoho atributu jako sloupec A a sloupec B.

Stůl 1

Sloupec A
1
1
2
3
4

Tabulka 2

Sloupec B
1
2
2
3
3
5

Dotaz:

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

Výstup:

Sloupec A Sloupec B
1 1
1 Nula
2 2
Nula 2
3 3
Nula 3

2. Připojte se vlevo

Toto spojení vrací všechny záznamy z levé tabulky a odpovídající záznamy z pravé tabulky.

Jak ukazuje obrázek výše, skládá se ze všech záznamů tabulky A a společných záznamů z A a B.

Příklad č. 1:

Zákaznické identifikační číslo název Město
1 Harish Cuttack
2 Davide Bangalore
3 Mahesh Bhubaneswar
4 Sam Kalkata

Tabulka zákazníků:

Číslo objednávky Množství Zákaznické identifikační číslo
19868 7575, 00 4
19976 434654, 00 2
99680 7457, 00 3

Tabulka objednávek:

Zjistíme customer_id, name a order_id spojené pomocí levého spojení.

Dotaz:

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

Výstup:

Zákaznické identifikační číslo názevČíslo objednávky
1 Harish nula
2 Davide 19976
3 Mahesh 99680
4 Sam 19868

Jak jsme diskutovali, toto levé spojení vyvolalo všechny zákaznické ID ze zákaznické tabulky a společné mezi oběma tabulkami. U customer_id '1' se zobrazí jako 'null', protože customer_id '1' není v tabulce objednávek.

Příklad č. 2:

Zde máme 2 tabulky, tabulka1 a tabulka2. Obě tabulky se skládají z jednoho atributu jako sloupec A respektive sloupec B.

Stůl 1

Sloupec A
1
1
2
2
3

Tabulka 2

Sloupec B
1
2
2
4
4
5
5

Dotaz:

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

Sloupec A Sloupec B
1 1
1 Nula
2 2
2 2
3 Nula

3. Správné připojení

Toto spojení vrací všechny záznamy z pravé tabulky a odpovídající z levé tabulky.

Výše uvedený diagram ukazuje, že načte všechny záznamy z tabulky B a běžný, který je přítomen v obou tabulkách.

Příklad:

Zákaznické identifikační číslo název Město
3 Mahesh Bhubaneswar
4 Sam Kalkata
5 RAM Bombaj

Tabulka zákazníků:

Číslo objednávky Množství Zákaznické identifikační číslo
19868 7575, 00 4
19976 434654, 00 2
99680 7457, 00 3

Tabulka objednávek:

Pomocí pravého spojení zjistíme customer_id, name a order_id.

Dotaz:

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

Výstup:

Zákaznické identifikační číslo název Číslo objednávky
2 nula 19976
3 Mahesh 99680
4 Sam 19868

Když jsme provedli správné spojení, zde dotaz vyvolal veškeré zákaznické id z tabulky objednávek a společné záznamy, které jsou v obou tabulkách.

4. Úplné vnější připojení

Úplné vnější spojení vrací všechny záznamy z obou tabulek, pokud existuje společné pole sdílené.

Příklad:

Zákaznické identifikační číslo název Město
3 Mahesh Bhubaneswar
4 Sam Kalkata
5 RAM Bombaj

Tabulka zákazníků:

Číslo objednávky Množství Zákaznické identifikační číslo
19868 7575, 00 4
19976 434654, 00 2
99680 7457, 00 3

Tabulka objednávek:

Najdeme customer_id, name a order_id asociované s ním pomocí úplného vnějšího spojení.

Dotaz:

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ýstup:

Zákaznické identifikační číslo název Číslo objednávky
2 nula 19976
3 Mahesh 99680
4 Sam 19868
5 RAM nula

Toto úplné vnější spojení vyvolalo veškeré zákaznické ID z tabulky zákazníků i tabulky objednávek.

5. Self-Join

Self-join je pravidelné spojení a zde se tabulka připojuje pouze k sobě.

Emp_id název Telefonní číslo Město Země
1001 R. Madhvan 9687687698 Bangalore Indie
1002 Gobu Sharma 9856453423 Pune Indie
1003 Zničte Das 8765456787 Bombaj Indie
1004 Amit Rout 4567788635 Pune Indie
1005 Sambit Kar 8789887873 Hyderabad Indie

Zde je tabulka zaměstnanců sestávající z několika polí. Zjistíme zaměstnance žijící ve stejném městě.

Dotaz :

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 Připojte se

Toto spojení vytvoří výsledek, kdy se počet řádků v první tabulce násobí řádky v druhé tabulce. Tento druh výsledku se nazývá kartézský produkt. Použijeme-li klauzuli WHERE s tímto spojením, bude to fungovat jako vnitřní spojení.

Příklad:

Prod_id Jméno výrobku Prod_unit ID společnosti
1 Chex mix Ks 12
2 Cheez-it Ks 15
3 Šušenka ks 16

Tabulka produktů :

ID společnosti Jméno společnosti Company_city
15 Foodies Dillí
16 Jack n Jill Cuttack
17 Přírodní Bangalore

Tabulka společnosti :

Na tyto tabulky použijeme křížové spojení.

Dotaz :

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
Šušenka Ks Foodies
Chex mix Ks Jack n Jill
Cheez-it Ks Jack n Jill
Šušenka Ks Jack n Jill
Chex mix Ks Přírodní
Cheez-it Ks Přírodní
Šušenka Ks Přírodní

Závěr

Význam těchto spojení je velmi důležitý při práci v scénářích v reálném čase i v některých dalších technologiích. Ve vizualizacích, jako jsou Tableau a Power BI, hrají spojení důležitou roli. Strukturovaná praxe je klíčem k začlenění těchto nových technik a dovedností.

Doporučený článek

Toto je průvodce připojením v MySQL. Zde diskutujeme prvních 6 typů spojení v MySQL jako Inner, Left, Right, Full, Self, Cross a jejich příklady spolu s dotazem a výstupem. můžete také projít naše doporučené články a dozvědět se více -

  1. Top 10 MySQL příkazů
  2. Úvod do MySQL operátorů
  3. MySQL vs. SQLite Top 14 Porovnání
  4. Top 23 funkcí MySQL String
  5. Vysvětlete příkaz Vložit v MySQL s příklady
  6. 6 hlavních rozdílů primárního klíče od cizího klíče