Klíčový rozdíl: Propojení dat v dvou různých tabulkách se provádí v SQL. Vnitřní spoj je podmínka, která vede k řádkům, které vyhovují klauzuli "kde" v "všech tabulkách"; zatímco vnější spojitost je podmínkou, která vede k tomu, že řádky vyhovují klauzuli "kde" v "alespoň jednom z tabulek".
Při implementaci spojů jsou vytvořeny dočasné tabulky založené na sloupcích. Měly by být vždy dva tabulky pro podmínky spojení. Tyto podmínky pak sloučí jednotlivé komponenty jedné tabulky s ostatními komponenty a vytvoří zcela novou tabulku. Cílem těchto tabulek je získání smysluplných a požadovaných údajů nebo informací. V závislosti na podmínkách existují dva typy spojů, vnitřní a vnější spojení.
SQL INNER JOIN Syntaxe:
SELECT název_sloupce
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;
Klíčové slovo INNER JOIN vybírá všechny řádky z obou tabulek, pokud existuje shoda mezi sloupci v obou tabulkách.
Vnitřní spoje závisí na výběru návrhů a charakteristik databáze. V souladu s tím se tyto vnitřní spoje používají v závodech Equi-Joins a Natural Joins. V Equi Join existuje specifický typ srovnání, který se používá k vyrovnání obou uvedených tabulek. Tato tabulka tedy používá rovnocenný predikát. Přirozený spoj je typ spojení Equi.
Syntaxe pro Equi Join je následující:
S ELECT *
FROM tabulka1, tabulka 2
WHERE table1.coloumn_name = table2.coloumn_name;
Pokud mají sloupce v equi-join stejný název, pak příslušná verze SQL poskytuje volitelnou zkrácenou notaci, kterou lze konstrukcí USING vyjádřit jako:
SELECT *
Z tabulky INNER JOIN table2 POUŽITÍ (název_sloupce);
Syntaxe pro přirozené připojení je následující:
SELECT *
Z tabulky1 NATURAL JOIN table2;
"Vnější spoj" nepotřebuje odpovídající podmínky pro záznamy. Tento stav připojení udržuje všechny ostatní záznamy, kromě nezapadaných záznamů. Tento spoj je dále distribuován v podmínkách levého, pravého a úplného vnějšího spojení, které jsou implementovány podle požadovaných podmínek a atributů tabulky.
Vlevo vnější spojení
Klíčové slovo LEVÝ JOIN vrací všechny řádky z tabulky vlevo (tabulka1) se shodnými řádky v pravé tabulce (tabulka2). Výsledkem je "NULL" na pravé straně, pokud není shoda.
Syntaxe levého vnějšího spojení následuje:
SELECT název_sloupce
FROM table1
LEVÁ VNĚJŠÍ ZÁVĚSNÁ tabulka2
ON table1.column_name = table2.column_name;
Pravý vnější spoj
Klíčové slovo RIGHT JOIN vrací všechny řádky z pravé tabulky (tabulka2) s odpovídajícími řádky v tabulce vlevo (tabulka1). Výsledek je NULL na levé straně, pokud není shoda.
Syntaxe pravého vnějšího spojení následuje:
SELECT název_sloupce
FROM table1
PRAVÝ VNĚJŠÍ KOLEKCÍ2
ON table1.column_name = table2.column_name;
Plný vnější spoj
Klíčové slovo FULL OUTER JOIN vrací všechny řádky z tabulky vlevo (tabulka1) a pravé tabulky (tabulka2). Klíčové slovo FULL OUTER JOIN kombinuje výsledek spojů LEFT a RIGHT.
Syntaxe pro Full Outer Join je:
SELECT název_sloupce
FROM table1
TABULKA FULL OUTER JOIN2
ON table1.column_name = table2.column_name;
Srovnání mezi vnitřním spojením a vnějším spojením:
Vnitřní spojení | Vnější spojení | |
Základní funkce | Vnitřní spoje se v podstatě používají k nalezení odpovídajících řádků mezi dvěma tabulkami. | Vnější spojení zachovává řádky obou tabulek nebo obou tabulek. |
Existence společných proměnných | Zde musí být společná proměnná povinně obsažena v obou tabulkách. | Proměnná závisí pouze na první tabulce, která může nebo nemusí být obsažena v druhé tabulce. |
Vrací | Vnitřní spojení vrátí pouze řádky, ve kterých existuje shoda založená na predikátu spojení. | Vnější spojení vrátí všechny řádky, ať už jsou založeny na shodě nebo nejsou porovnány - na základě predikátu spojení. |
Bývalo | Slouží k zobrazení záznamů pouze tehdy, jsou-li záznamy na obou tabulkách. | Používá se k zobrazení všech záznamů v jedné tabulce. |
Platí v | Jsou použitelné v: Equi-Join a Přírodní spojení | Jsou použitelné jako: Vlevo vnější spojení Pravý vnější spoj Plný vnější spoj |