Úvod do spojení v Oracle

Spojení v Oracle se používají k přístupu k datům z více tabulek. Spojení v Oracle je používáno v místě, kde mají být spojeny více než dvě tabulky pro shromažďování užitečných informací v příkazu Oracle SQL. Jinými slovy, dotaz spojení použitý k načtení řádků z více než dvou tabulek nebo pohledů na základě podmínek spojení. Podmínku spojení lze určit v klauzuli FROM nebo v klauzule where. Podmínka spojení porovná sloupce různých tabulek a načte ty řádky, pro které je podmínka spojení pravdivá.

Typy spojení v Oracle

V Oracle existuje deset různých typů spojení, jak je uvedeno níže:

  • Inner Joins (také známý jako Simple Joins)
  • Equi se připojí
  • Vnější připojení
  • Left Outer Joins (také nazývaný jako Left Joins)
  • Right Outer Joins (nazývané také jako Right Joins)
  • Full Outer Joins (nazývané také jako Full Joins)
  • Self se připojí
  • Cross Joins (nazývaný také jako karteziánské produkty)
  • Anti Joins
  • Semi Joins

Dále jsme pochopili každé spojení podrobně se syntaxí a příklady.

1. VNITŘNÍ PŘIPOJENÍ (známé také jako Simple Join)

Vnitřní spojení se připojí k více tabulkám a vrátí ty řádky, pro které je podmínka spojení pravdivá. Vnitřní spojení je nejběžnějším spojením mezi typy spojení.

Syntax:

SELECT column (, column ) FROM t1
INNER JOIN t2
ON t1.column = t2.column;

Níže uvedený diagram představuje vizuální reprezentaci vnitřního spojení, protože v diagramu se stínovaná oblast vrátí jako výsledek Oracle INNER JOIN:

Výsledkem je, že Oracle INNER JOIN vrátí protínající se záznamy t1 a t2.

Příklad:

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 tabulek zaměstnanců a oddělení, kde se shodují hodnoty _id zaměstnance v tabulkách zaměstnanců i oddělení.

2. Equi Joins

Produkt Oracle Equi Joins načte odpovídající hodnoty sloupců více tabulek. Podmínka spojení nebo operátor porovnání přítomný v klauzuli WHERE příkazu select.

Syntax:

SELECT column (, column ) FROM t1, t2
where t1.column = t2.column;

Níže uvedený diagram představuje vizuální reprezentaci equijoin, protože v diagramu se stínovaná oblast vrací jako výsledek spojení Oracle Equi Join.

Výsledkem je, že Oracle Equijoin vrátí protínající se záznamy t1 a t2.

Příklad:

SELECT employee.employee _id, employee.employee_name, department. department_name
FROM employee, department
where employee.employee _id = department.employee _id;

Tento výše uvedený příklad aplikace Oracle Equijoin vrátí všechny řádky z tabulek zaměstnanců a oddělení, ve kterých se hodnota _id zaměstnance v tabulkách zaměstnanců a oddělení shoduje.

3. Vnější připojení

Dalším typem spojení je vnější spojení, které vrací výsledek vnitřního spojení plus všechny řádky z jedné tabulky, pro které není podmínka spojení pravdivá.

Syntax:

SELECT column (, column ) FROM t1
LEFT | RIGHT | FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Níže jsou uvedeny tři typy vnějšího spojení:

  • Left Outer Joins (také nazývaný jako Left Joins)
  • Right Outer Joins (nazývané také jako Right Joins)
  • Full Outer Joins (nazývané také jako Full Joins)

4. Levé vnější připojení

Vrácení levého vnějšího spojení obsahuje všechny řádky z tabulky VLEVO (podle zadaného stavu ON) az ostatních tabulek pouze ty řádky, kde je připojená podmínka pravdivá.

Syntax:

SELECT column (, column ) FROM t1
LEFT (OUTER) JOIN t2
ON t1.column = t2.column;

Klíčové slovo LEFT OUTER JOIN používá LEFT JOIN v některých jiných databázích.

Níže uvedený diagram představuje vizuální reprezentaci LEVÉHO VNĚJŠÍHO PŘIPOJENÍ, protože ve schématu se stínovaná oblast vrátí jako výsledek spojení Oracle LEFT OUTER JOIN:

Výsledkem je, že Oracle LEFT OUTER JOIN vrátí všechny záznamy z t1 a protínající se záznamy t1 a t2.

Příklad:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
LEFT OUTER JOIN department
ON employee.employee _id = department.employee _id;

Tento výše uvedený příklad Oracle LEFT OUTER JOIN vrátí všechny řádky z tabulky zaměstnanců a z tabulky oddělení pouze ty řádky, kde je připojená podmínka pravdivá. Tabulky oddělení, ve kterých se hodnota zaměstnance _id v tabulkách zaměstnanců i oddělení shodují.

Pokud se hodnota zaměstnance _id v tabulce zaměstnanců v tabulce oddělení shoduje, budou pole tabulky oddělení ve výsledku nulová.

5. Right Outer Join

Návraty RIGHT OUTER JOIN obsahují všechny řádky z tabulky RIGHT (podle zadané podmínky ON) az ostatních tabulek pouze ty řádky, u nichž je podmínka splněna.

Syntax:

SELECT column (, column ) FROM t1
RIGHT (OUTER) JOIN t2
ON t1.column = t2.column;

Klíčové slovo RIGHT OUTER JOIN, používané jako RIGHT JOIN v některých jiných databázích.

Níže uvedený diagram představuje vizuální reprezentaci PRAVÉHO VNĚJŠÍHO PŘIPOJENÍ, protože ve schématu se stínovaná oblast vrátí jako výsledek spojení Oracle PRAVÝ VNĚJŠÍ.

Výsledkem je, že Oracle RIGHT OUTER JOIN vrátí všechny záznamy z t2 a protínající se záznamy t1 a t2.

Příklad:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
RIGHT OUTER JOIN department
ON employee.employee _id = department.employee _id;

Tento výše uvedený příklad Oracle LEFT OUTER JOIN vrátí všechny řádky z tabulky oddělení a ze zaměstnanecké tabulky pouze ty řádky, kde je připojená podmínka pravdivá. Tabulky zaměstnanců, kde se hodnota zaměstnanec _id v tabulkách zaměstnanců i oddělení shoduje.

Pokud se hodnota zaměstnance _id v tabulce zaměstnanců v tabulce oddělení shoduje, budou pole tabulky zaměstnanců ve výsledku nulová.

6. Plné vnější připojení

Vrácení Full Outer Join obsahují všechny řádky z LEFT tabulky a RIGHT tabulky s null v polích, kde podmínka spojení není pravdivá.

Syntax:

SELECT column (, column ) FROM t1
FULL (OUTER) JOIN t2
ON t1.column = t2.column;

Klíčové slovo FULL OUTER JOIN se používá jako FULL JOIN v některých jiných databázích.

Níže uvedený diagram představuje vizuální reprezentaci PLNÉHO VNĚJŠÍHO PŘIPOJENÍ, protože v diagramu se stínovaná oblast vrátí jako výsledek Oracle FULL OUTER JOIN.

Výsledkem je, že Oracle FULL OUTER JOIN vrátí všechny záznamy z tabulek t1 a t2.

Příklad:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
FULL OUTER JOIN department
ON employee.employee _id = department.employee _id;

Tento výše uvedený příklad Oracle FULL OUTER JOIN vrátí všechny řádky z tabulky zaměstnanců a z tabulky oddělení s nulovými hodnotami, pokud připojená podmínka není pravdivá.

7. Oracle Self Joins

Při samostatném připojení se tabulka používá dvakrát v klauzuli FROM pomocí názvu aliasu tabulky. Jinými slovy, já se připojí, připojí se ke stolu. Produkt Oracle Self Join kombinuje a vrací řádky tabulky, kde je podmínka spojení pravdivá.

Příklad:

SELECT emp1.employee_name || 'works for' || emp2.employee_name
FROM employees emp1, employees emp2
WHERE emp1.manager_id = emp2.employee_id
ORDER BY emp1.employee_name;

Tento výše uvedený příklad Oracle JOIN Oracle vrátí všechny řádky z tabulky zaměstnanců, kde je připojená podmínka pravdivá.

8. Oracle Cross Joins (nazývaný také jako kartézské produkty)

Křížové spojení platí, pokud dvě tabulky nemají podmínku spojení. Křížové spojení vrátí kartézský součin dvou tabulek, kartézský součin, kde se každá řada jedné tabulky kombinuje s každou řadou druhé tabulky. Předpokládejme, že tabulka1 obsahuje 100 řádků a tabulka2 obsahuje 10 řádků, pak by výsledek spojení obsahoval 1000 řádků.

Příklad;

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
CROSS JOIN department

Tento výše uvedený křížový příklad JOIN vrátí všechny řádky tabulky zaměstnanců kombinované se všemi řádky tabulky oddělení.

9. Oracle Anti Joins

Vrácení antijoinů obsahuje řádky z tabulky VLEVO (podle zadaného stavu ON), kde je připojená podmínka pravdivá.

Příklad:

SELECT employee.employee _id, employee.employee_name, department.department_name
FROM employee
WHERE department_id NOT IN (SELECT department_id from department
WHERE department_name = 'sales';

Tento výše uvedený příklad Oracle ANTI JOIN vrátí řádky z tabulky zaměstnanců a kde je připojená podmínka pravdivá.

10. Oracle Semi Joins

Vraty semijoin obsahují jedinečné řádky z tabulky VLEVO (podle zadaného stavu ON), kde je shoda EXISTS poddotazu pravdivá.

Příklad:

SELECT employee.employee _id, employee.employee_name
FROM employee
WHERE EXISTS (SELECT department_id FROM department
WHERE department_name = 'sales');

Tento výše uvedený příklad Oracle SEMI JOIN vrátí řádky z tabulky zaměstnanců, pokud EXISTY vrátí true.

Závěr

Slouží k přístupu k datům z více tabulek. V Oracle existuje sedm různých typů spojení.

Doporučené články

Toto je průvodce Joins v Oracle. Zde diskutujeme úvod k Joins v Oracle a jeho 10 různých typů v Joins v Oracle. Další informace naleznete také v dalších souvisejících článcích -

  1. Typy spojení v SQL
  2. Tableau Joins
  3. Oracle Warehouse Builder
  4. Funkce Oracle String
  5. Co je dotaz a typy dotazů Oracle
  6. Top 6 typů spojení v MySQL s příklady
  7. Průvodce po prvních 9 klauzulích Oracle (příklad) l
  8. VYBRAT v MySQL | Příklady SELECT v MySQL

Kategorie: