Úvod do společnosti Inner Join in Oracle
Klauzule join se používají v databázi Oracle pro přístup k datům z více tabulek k získání informací. V databázi Oracle jsou různé typy spojení.
Vnitřní spojení je jedním z typů spojení v databázi Oracle. Vnitřní spojení, připojte se k více tabulkám a vraťte ty řádky, pro které je podmínka spojení pravdivá. Vnitřní spojení je také známé jako jednoduché spojení. Vnitřní spojení je nejběžnějším spojením mezi typy spojení.
Syntaxe vnitřního spojení
SELECT column (, column ) FROM t1
INNER JOIN t2
ON t1.column = t2.column;
Vizuální reprezentace vnitřního spojení je znázorněna na níže uvedeném diagramu, zatímco ve schématu níže se stínovaná oblast vrací jako výsledek Oracle Inner Join
Výsledkem je Oracle Inner Join, který vrací protínající se záznamy t1 a t2.
Příklady dotazů pro vnitřní spojení
Podívejme se podrobně na vnitřní spojení pomocí několika příkladů dotazu:
Příklad č. 1
Příklad dotazu pro Vnitřní připojení
SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee
INNER JOIN department
ON employee.employee _id = department.employee _id;
Tento výše uvedený příklad Oracle INNER JOIN vrátí všechny řádky z tabulky zaměstnanců a tabulky oddělení, kde je přiřazena hodnota _id zaměstnance v tabulce zaměstnanců i tabulce oddělení.
Uvažujeme zde o schématu hr, které je schématem vzorové databáze Oracle. Schéma hr obsahuje tabulky ZEMĚ, ZAMĚSTNANCI, ODDĚLENÍ, JOB_HISTORY, PRACOVNÍKY, MÍSTA, REGIONY, o které se zajímáme nebo požadujeme tabulky ZAMĚSTNANCŮ, ODDĚLENÍ a MÍSTA.
Popis těchto tabulek je -
Tabulka ZAMĚSTNANCI
ODDĚLENÍ tabulky
Tabulka LOKACE
Příklad č. 2
Příklad vnitřního spojení pro dvě tabulky
Zde bychom chtěli načíst data ze dvou tabulek ZAMĚSTNANCŮ a ODDĚLENÍ. V tomto dotazu píšeme, abychom načíst ID zaměstnance zaměstnance a jeho jméno z tabulky zaměstnanců a název oddělení z tabulky oddělení -
SELECT employees. employee_id, employees. first_name, departments.department_name
FROM employees, departments
WHERE employees. employee_id = departments. department_id;
Výstup
Názvům sloupců s tabulkou předchází klauzula Oracle SELECT. Pokud je sloupec společný pro obě tabulky, musí být pro přehlednost název sloupce předponován názvem tabulky. Tabulky, z nichž mají být data načtena, určují v klauzuli from from s čárkami oddělenými. V klauzuli WHERE určete podmínku spojení. Vztah mezi zaměstnanci a tabulkami oddělení je určen hodnotami ve společném sloupci Employ_id v obou tabulkách musí být stejné a tento vztah se označuje jako spojení Equi. Do tohoto vztahu jsou obvykle zapojeny primární a cizí klíče.
Příklad č. 3
Příklad vnitřního spojení dvou tabulek s Aliasy
Přepíšme výše uvedený příklad pomocí tabulkových aliasů jako -
SELECT e. employee_id, e. first_name,
d. department_name
FROM employees e, departments d
WHERE e. employee_id = d. department_id;
Výstup
Stejně jako ve výše uvedeném dotazu se aliasy tabulek vytvářejí v klauzuli z za názvem sloupce a namísto psaní celého názvu tabulky ve klauzuli select před každým sloupcem použijte tabulku Aliasy jako e a d ve výše uvedeném dotazu.
Příklad č. 4
Příklad vnitřního spojení dvou tabulek s přidáním dalších ustanovení
Příklad dalšího dotazu, kde přidáme další klauzule do našeho příkazu Oracle SELECT, kde klauzule pro přidávání agregací, omezení vrácených řádků, definování pořadí třídění atd. Zde je příklad dotazu, který vyhledá všechny zaměstnance, kteří pracují v oddělení finance, výroba a stavebnictví.
SELECT e. employee_id, e. first_name,
d. department_name
FROM employees e, departments d
WHERE e. employee_id = d. department_id
AND d. department_name in ( 'Finance', 'Manufacturing', 'Construction' );
Výstup
Příklad č. 5
Příklad vnitřního spojení dvou tabulek s seřazením podle klauzule
Následující příklad dotazu přepíšeme výše uvedený dotaz přidáním objednávky podle klauzule, proto zobrazíme data zaměstnance seřazená podle názvu oddělení.
SELECT e. employee_id, e. first_name,
d. department_name
FROM employees e, departments d
WHERE e. employee_id = d. department_id
AND d. department_name in ('Finance', 'Manufacturing', 'Construction')
ORDER BY d. department_name;
Výstup
Příklad č. 6
Příklad vnitřního spojení pro připojení více tabulek
Někdy potřebujeme získat informace, abychom mohli spojit více než dvě tabulky. Dále napíšeme příklad dotazu, abychom se spojili s více tabulkami. Vezměme si příklad, který chceme načíst jméno zaměstnance z tabulky zaměstnanců, název oddělení z tabulky oddělení a identifikační číslo země, kde tento zaměstnanec pracuje v tabulce umístění.
SELECT e. first_name, e. salary, d. department_name, l. city, l. country_id
FROM employees e, departments d, locations l
WHERE e. employee_id = d. department_id
AND
d. location_id = l. location_id;
Výstup
Pro spojení čtyř nebo více tabulek platí stejný koncept přidáním názvu tabulky v klauzuli FROM věštce a podmínku spojení použijeme v klauzuli WHERE věštce.
Závěr
Vnitřní spojení je jedním z typů spojení v databázi Oracle. Vnitřní spojení používané ke spojení více tabulek a vrácení těch řádků, pro které je podmínka spojení pravdivá. Obecně primární klíč a cizí klíč jsou zapojeny do vnitřního spojení, aby vytvořily vztah mezi tabulkami.
Doporučené články
Toto je průvodce Inner Join in Oracle. Zde diskutujeme úvod k Inner join spolu s několika příklady podrobně. Další informace naleznete také v dalších navrhovaných článcích -
- Připojuje se k MySQL
- Dotazy Oracle
- Oracle Data Warehousing
- Co je to databáze Oracle