MySQL SE PŘIPOJUJE se používají k načítání dat z více tabulek. REGISTRACE provede se vždy, když jsou dvě nebo více tabulek spojeny v příkazu SQL.
Existují různé typy připojení MySQL:
Podívejme se na syntaxi MySQL JOIN a také si prostudujeme příklady MySQL JOIN.
INNER JOIN (jednoduché spojení)
S největší pravděpodobností jste již napsali dotazy, které používají MySQL INNER JOIN. Toto je nejběžnější typ připojení. MySQL INNER JOINS vrací všechny řádky z více tabulek, kde jsou splněny podmínky spojení.
syntax
Syntaxe INNER JOIN v MySQL:
Na tomto obrázku vrací MySQL INNER JOIN stínovanou oblast:
MySQL INNER JOIN vrátí záznamy, kde se tabulka1 a tabulka2 protínají.
příklad
Níže je uveden příklad MySQL INNER JOIN:
Tento příklad MySQL INNER JOIN vrací všechny řádky z tabulek dodavatelů a objednávek, kde jsou v obou tabulkách odpovídající hodnoty pole id_dodavatele.
Podívejme se na některá data, abychom pochopili, jak INNER JOIN funguje:
Máme tabulku dodavatelů se dvěma poli ( id_dodavatele a jméno_dodavatele ), která obsahuje následující údaje:
dodavatel_id | Jméno dodavatele |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
Máme další tabulku objednávek se třemi poli ( order_id , dodavatel_id a order_date ). Obsahuje následující údaje:
číslo objednávky | dodavatel_id | datum objednávky |
---|---|---|
500125 | 10000 | 05.05.2015 |
500126 | 10001 | 08.02.2016 |
500127 | 10004 | 06.01.2017 |
Pokud provedeme příkaz MySQL SELECT (který obsahuje INNER JOIN) níže:
Naše sada výsledků bude vypadat takto:
dodavatel_id | název | datum objednávky |
---|---|---|
10000 | IBM | 05.05.2015 |
10001 | Hewlett Packard | 08.02.2016 |
Řádky pro Microsoft a NVIDIA z tabulky dodavatelů budou vynechány, protože hodnoty id_dodavatele 10002 a 10003 v obou tabulkách neexistují. Řádek order_id 500127 z tabulky objednávek bude vynechán, protože dodavatel_id 10004 v tabulce dodavatelů neexistuje.
Stará syntaxe
Jako poslední poznámku stojí za zmínku, že výše uvedený příklad MySQL INNER JOIN lze přepsat pomocí staré implicitní syntaxe následovně (doporučuje se však použít syntaxi INNER JOIN):
SELECT dodavatelé.id_dodavatele, dodavatelé.jméno_dodavatele, objednávky.datum_objednávky
OD dodavatelů, objednávky
WHERE Suppliers.supplier_id = orders.supplier_id;
LEVÁ VNĚJŠÍ SPOJENÍ
Další typ spojení se nazývá MySQL LEFT OUTER JOIN. Tento typ spojení vrátí všechny řádky z tabulek s levým spojením zadaným v klauzuli ON a pouze ty řádky z jiné tabulky, kde jsou spojovaná pole stejná.
syntax
Syntaxe pro LEFT OUTER JOIN v MySQL:
V některých databázích je LEFT OUTER JOIN nahrazeno LEFT JOIN.
Na tomto obrázku vrací MySQL LEFT OUTER JOIN stínovanou oblast:
MySQL LEFT OUTER JOIN vrátí všechny záznamy z tabulky1 a pouze ty záznamy z tabulky2, které se protínají s tabulkou1.
příklad
Tento příklad LEFT OUTER JOIN vrátí všechny řádky z tabulky dodavatelů a pouze ty řádky z tabulky objednávek, kde jsou spojovaná pole stejná.
Pokud hodnota id_dodavatele v tabulce dodavatelů v tabulce objednávek neexistuje, všechna pole v tabulce objednávek se v sadě výsledků zobrazí jako NULL.
Podívejme se na některá data, abychom pochopili, jak funguje LEFT OUTER JOIN:
Máme tabulku dodavatelů se dvěma poli ( id_dodavatele a jméno_dodavatele ), která obsahuje následující údaje:
dodavatel_id | Jméno dodavatele |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
Máme další tabulku objednávek se třemi poli ( order_id , dodavatel_id a order_date ). Obsahuje následující údaje:
číslo objednávky | dodavatel_id | datum objednávky |
---|---|---|
500125 | 10000 | 05.05.2015 |
500126 | 10001 | 08.02.2016 |
Pokud provedeme příkaz MySQL SELECT (který obsahuje LEFT OUTER JOIN) níže:
Oracle SE PŘIPOJUJE se používají k načítání dat z více tabulek. REGISTRACE provede se vždy, když jsou dvě nebo více tabulek spojeny v příkazu SQL.
Existují 4 různé typy spojení Oracle:
Podívejme se na syntaxi Oracle JOIN a také si prostudujeme příklady Oracle JOIN.
INNER JOIN (jednoduché spojení)
S největší pravděpodobností jste již napsali dotazy, které používají Oracle INNER JOIN. Toto je nejběžnější typ připojení. Oracle INNER JOINS vrátí všechny řádky z více tabulek, kde jsou splněny podmínky spojení.
syntax
Syntaxe INNER JOIN v Oracle/PLSQL:
Na tomto obrázku vrací Oracle INNER JOIN stínovanou oblast:
Oracle INNER JOIN vrátí záznamy, kde se tabulka1 a tabulka2 protínají.
příklad
Níže je uveden příklad Oracle INNER JOIN:
Tento příklad Oracle INNER JOIN vrací všechny řádky z tabulek dodavatelů a objednávek, kde jsou v obou tabulkách odpovídající hodnoty pole id_dodavatele.
Podívejme se na některá data, abychom pochopili, jak INNER JOIN funguje:
Máme tabulku dodavatelů se dvěma poli ( id_dodavatele a jméno_dodavatele ), která obsahuje následující údaje:
dodavatel_id | Jméno dodavatele |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
Máme další tabulku objednávek se třemi poli ( order_id , dodavatel_id a order_date ). Obsahuje následující údaje:
číslo objednávky | dodavatel_id | datum objednávky |
---|---|---|
500125 | 10000 | 05.05.2015 |
500126 | 10001 | 08.02.2016 |
500127 | 10004 | 06.01.2017 |
Pokud provedeme příkaz Oracle SELECT (který obsahuje INNER JOIN) níže:
Naše sada výsledků bude vypadat takto:
dodavatel_id | název | datum objednávky |
---|---|---|
10000 | IBM | 05.05.2015 |
10001 | Hewlett Packard | 08.02.2016 |
Řádky pro Microsoft a NVIDIA z tabulky dodavatelů budou vynechány, protože hodnoty id_dodavatele 10002 a 10003 v obou tabulkách neexistují. Řádek order_id 500127 z tabulky objednávek bude vynechán, protože dodavatel_id 10004 v tabulce dodavatelů neexistuje.
Stará syntaxe
Jako poslední poznámku stojí za zmínku, že výše uvedený příklad Oracle INNER JOIN lze přepsat pomocí staré implicitní syntaxe následovně (doporučuje se však použít syntaxi INNER JOIN):
SELECT dodavatelé.id_dodavatele,
dodavatelé.jméno_dodavatele,
orders.order_date
OD dodavatelů, objednávky
WHERE Suppliers.supplier_id = orders.supplier_id;
LEVÁ VNĚJŠÍ SPOJENÍ
Další typ spojení se nazývá Oracle LEFT OUTER JOIN. Tento typ spojení vrátí všechny řádky z tabulek s levým spojením zadaným v klauzuli ON a pouze ty řádky z jiné tabulky, kde jsou spojovaná pole stejná.
syntax
Syntaxe pro Oracle LEFT OUTER JOIN:
V některých databázích je LEFT OUTER JOIN nahrazeno LEFT JOIN.
Na tomto obrázku vrací Oracle LEFT OUTER JOIN stínovanou oblast:
Oracle LEFT OUTER JOIN vrátí všechny záznamy z tabulky1 a pouze ty záznamy z tabulky2, které se protínají s tabulkou1.
příklad
Tento příklad LEFT OUTER JOIN vrátí všechny řádky z tabulky dodavatelů a pouze ty řádky z tabulky objednávek, kde jsou spojovaná pole stejná.
Pokud hodnota id_dodavatele v tabulce dodavatelů v tabulce objednávek neexistuje, všechna pole v tabulce objednávek se v sadě výsledků zobrazí jako NULL.
Podívejme se na některá data, abychom pochopili, jak funguje LEFT OUTER JOIN:
Máme tabulku dodavatelů se dvěma poli ( id_dodavatele a jméno_dodavatele ), která obsahuje následující údaje:
dodavatel_id | Jméno dodavatele |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
Máme další tabulku objednávek se třemi poli ( order_id , dodavatel_id a order_date ). Obsahuje následující údaje:
číslo objednávky | dodavatel_id | datum objednávky |
---|---|---|
500125 | 10000 | 05.05.2015 |
500126 | 10001 | 08.02.2016 |
Pokud provedeme příkaz Oracle SELECT (který obsahuje LEFT OUTER JOIN) níže:
Výsledná sada bude vypadat takto:
dodavatel_id | název | datum objednávky |
---|---|---|
10000 | IBM | 05.05.2015 |
10001 | Hewlett Packard | 08.02.2016 |
10002 | Microsoft | null |
10003 | NVIDIA | null |
Řádky pro Microsoft a NVIDIA budou zahrnuty, protože bylo použito LEFT OUTER JOIN. Všimněte si však, že pole order_date pro tyto záznamy má hodnotu NULL.
PRAVÝ VNĚJŠÍ SPOJ
Další typ spojení se nazývá Oracle RIGHT OUTER JOIN. Tento typ spojení vrátí všechny řádky z tabulek s pravostranným spojením zadaným v klauzuli ON a pouze ty řádky z jiné tabulky, kde jsou spojovaná pole stejná.
syntax
Syntaxe Oracle RIGHT OUTER JOIN:
V některých databázích je RIGHT OUTER JOIN nahrazeno RIGHT JOIN.
Na tomto obrázku vrací Oracle RIGHT OUTER JOIN stínovanou oblast:
Oracle RIGHT OUTER JOIN vrátí všechny záznamy z tabulky2 a pouze ty záznamy z tabulky1, které se protínají s tabulkou2.
příklad
Níže je uveden příklad Oracle RIGHT OUTER JOIN:
Tento příklad RIGHT OUTER JOIN vrátí všechny řádky z tabulky objednávek a pouze ty řádky z tabulky dodavatelů, kde jsou spojovaná pole stejná.
Pokud hodnota id_dodavatele v tabulce objednávek v tabulce dodavatelů neexistuje, všechna pole v tabulce dodavatelů se ve výsledné sadě zobrazí jako NULL.
Podívejme se na některá data, abychom pochopili, jak funguje RIGHT OUTER JOIN:
Máme tabulku dodavatelů se dvěma poli ( id_dodavatele a jméno_dodavatele ), která obsahuje následující údaje:
dodavatel_id | Jméno dodavatele |
---|---|
10000 | jablko |
10001 |
Máme druhou tabulku objednávek se třemi poli ( order_id , dodavatel_id a order_date ). Obsahuje následující údaje:
číslo objednávky | dodavatel_id | datum objednávky |
---|---|---|
500125 | 10000 | 12.05.2016 |
500126 | 10001 | 14.05.2016 |
500127 | 10002 | 18.05.2016 |
Pokud provedeme příkaz Oracle SELECT (který obsahuje RIGHT OUTER JOIN) níže:
Výsledná sada bude vypadat takto:
číslo objednávky | datum objednávky | Jméno dodavatele |
---|---|---|
500125 | 12.05.2016 | jablko |
500126 | 14.05.2016 | |
500127 | 18.05.2016 | null |
Řádek pro order_id 500127 bude zahrnut, protože bylo použito RIGHT OUTER JOINS. Všimněte si však, že pole název_dodavatele pro tento záznam má hodnotu NULL.
ÚPLNÉ VNĚJŠÍ PŘIPOJENÍ
Další typ spojení se nazývá Oracle FULL OUTER JOIN. Tento typ spojení vrátí všechny řádky z levé a pravé tabulky s hodnotami NULL, kde podmínka spojení není splněna.
syntax
Syntaxe pro Oracle FULL OUTER JOIN:
V některých databázích jsou FULL OUTER JOINy nahrazeny FULL JOINy.
Na tomto obrázku vrátí FULL OUTER JOIN stínovanou oblast:
Oracle FULL OUTER JOIN vrátí všechny záznamy z tabulek tabulka1 a tabulka2.
příklad
Níže je uveden příklad Oracle FULL OUTER JOIN:
Tento příklad FULL OUTER JOIN vrátí všechny řádky z tabulky dodavatelů a všechny řádky z tabulky objednávek, a kdykoli není splněna podmínka spojení, pole ve výsledné sadě budou mít hodnotu NULL.
Pokud hodnota pole id_dodavatele v tabulce dodavatelů v tabulce objednávek neexistuje, všechna pole v tabulce objednávek se v sadě výsledků zobrazí jako NULL. Pokud hodnota id_dodavatele v tabulce objednávek v tabulce dodavatelů neexistuje, všechna pole v tabulce dodavatelů se ve výsledné sadě zobrazí jako NULL.
Podívejme se na některá data, abychom pochopili, jak funguje FULL OUTER JOIN:
Máme tabulku dodavatelů se dvěma poli ( id_dodavatele a jméno_dodavatele ). Obsahuje následující údaje:
dodavatel_id | Jméno dodavatele |
---|---|
10000 | IBM |
10001 | Hewlett Packard |
10002 | Microsoft |
10003 | NVIDIA |
Máme druhou tabulku objednávek se třemi poli ( order_id , dodavatel_id a order_date ), která obsahuje následující údaje:
číslo objednávky | dodavatel_id | datum objednávky |
---|---|---|
500125 | 10000 | 12.05.2016 |
500126 | 10001 | 14.05.2016 |
500127 | 10004 | 18.05.2016 |
Pokud provedeme příkaz Oracle SELECT (který obsahuje FULL OUTER JOIN) níže: