V SQL se LEFT JOIN i LEFT OUTER JOIN používají ke kombinaci dat ze dvou nebo více tabulek na základě souvisejícího sloupce, ale v podstatě jde o stejnou operaci a není mezi nimi žádný praktický rozdíl. Klíčové slovo OUTER je volitelné ve většině databázových systémů, včetně populárních systémů jako MySQL, PostgreSQL a SQL Server.

Levé spojení nebo Levé vnější spojení
Připojit se vlevo
A SQL operace, která kombinuje dvě tabulky, zobrazující všechny řádky z levé tabulky a odpovídající řádky z pravé tabulky. Pokud v pravé tabulce není žádná shoda, zobrazí se NULA hodnoty.
Syntax
SELECT * FROM Tabulka1
LEFT JOIN Table2 ON Table1.columnName = Table2.columnName;
Levý vnější spoj
Další operace SQL, která je koncepčně totožná s LEFT JOIN. Také kombinuje tabulky, zobrazuje všechny řádky z levé tabulky a odpovídající řádky z pravé tabulky. Pokud v pravé tabulce není žádná shoda, zobrazí se hodnoty NULL.
Syntax
SELECT * FROM Tabulka1
LEFT OUTER JOIN Table2 ON Table1.columnName = Table2.columnName;
LEFT JOIN a LEFT OUTER JOIN jsou v SQL v podstatě to samé. Oba kombinují data ze dvou tabulek, zobrazují všechny řádky z levé tabulky a odpovídající řádky z pravé tabulky. Pokud ve správné tabulce není žádná shoda, zobrazí hodnoty NULL. Jediný rozdíl je v terminologii: LEFT JOIN se používá v některých databázích jako MySQL , zatímco LEFT OUTER JOIN se používá v jiných, jako je SQL Server. Hlubším způsobem System.out.print() používaný v Javě, současně tisk používaný v pythonu, ale oba odráží stejný výstup. Jde tedy jen o to, jaký termín preferuje váš databázový systém, ale výsledek je stejný.
Než se ponoříme do příkladů, vytvořte si data, která jsou potřebná k provedení levého vnějšího spojení a levého spojení.
Krok 1: Vytvořte databázi
create database geeksforgeeks; use geeksforgeeks;>
Krok 2: Vytvořte tabulku s názvem athelete
create table atheletes(Id int, Name varchar(20), AtheleteNO int, primary key(Id) );>
Krok 3: Vložte hodnoty do tabulky athelete
INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (1, 'abisheik', 27); INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (2, 'Niyas', 27); INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (3, 'Joseph', 29); INSERT INTO atheletes (Id, Name, AtheleteNO) VALUES (4, 'Juan', 24);>
Krok 4: Vytvořte tabulku s názvem Body
CREATE TABLE Points(ID INT, Score INT,AtheleteID INT, PRIMARY KEY (ID) );>
Krok 5: Vložte hodnoty do tabulky Body
INSERT INTO Points (ID, Score, AtheleteID) VALUES (1, 270, 1); INSERT INTO Points (ID, Score, AtheleteID) VALUES (2, 297, 2); INSERT INTO Points (ID, Score, AtheleteID) VALUES (3, 210, 3); INSERT INTO Points (ID, Score, AtheleteID) VALUES (4, 180, 4);>
Nyní jsme úspěšně vytvořili tabulku athelete a body pro operaci spojení.
Příklad:
Pomocí levého vnějšího spojení bude dotaz proveden.
Dotaz
SELECT * FROM atheletes LEFT OUTER JOIN Points ON atheletes.ID = Points.AtheleteID;>
Výstup
| Id | název | Atlete NO | ID | Skóre srovnání java řetězců | AtheleteID |
|---|---|---|---|---|---|
| 1 | Abisheik | 27 | 1 | 270 | 1 |
| 2 | Niyas | 27 | 2 | 297 | 2 |
| 3 | Josefe | 29 | 3 | 210 | 3 |
| 4 | Juan | 24 | 4 | 180 | 4 |
Příklad:
Pomocí levého spojení se dotaz provede.
Dotaz
SELECT * FROM atheletes LEFT JOIN Points ON atheletes.ID = Points.AtheleteID;>
Výstup
| Id | název | Atlete NO | ID | Skóre | AtheleteID |
|---|---|---|---|---|---|
| 1 | Abisheik | 27 | 1 | 270 | 1 |
| 2 | Niyas | 27 | 2 | 297 | 2 |
| 3 | Josefe | 29 | 3 | 210 | 3 |
| 4 | Juan | 24 | 4 | 180 | 4 |
Závěr
V SQL jsou LEFT JOIN a LEFT OUTER JOIN v podstatě stejné operace, liší se pouze terminologií. Obě operace kombinují data ze dvou tabulek, zobrazují všechny řádky z levé tabulky a odpovídající řádky z pravé tabulky a zároveň zobrazují hodnoty NULL pro neodpovídající řádky. Bez ohledu na termín použitý ve vašem databázovém systému zůstává výsledek stejný.
Časté dotazy týkající se levého připojení vs levého vnějšího připojení
Q.1: Existuje nějaký výkonnostní rozdíl mezi LEFT JOIN a LEFT OUTER JOIN?
Odpovědět:
Ne, není žádný rozdíl ve výkonu. Tyto termíny jsou zaměnitelné a optimalizátor databáze s nimi zachází stejným způsobem.
java regex $
Q.2: Mohu použít LEFT JOIN nebo LEFT OUTER JOIN s více než dvěma stoly?
Odpovědět:
Ano, tyto operace spojení můžete použít s více tabulkami rozšířením syntaxe a zadáním podmínek spojení pro každou tabulku.
Q.3: Podporují všechny databázové systémy jak LEFT JOIN, tak LEFT OUTER JOIN?
Odpovědět:
Nejpoužívanější databázové systémy, včetně MySQL, PostgreSQL a SQL Server, podporují LEFT JOIN i LEFT OUTER JOIN. Je však nezbytné zkontrolovat kompatibilitu konkrétní dokumentace databáze.
Q.4: Co se stane, když použiji LEFT JOIN nebo LEFT OUTER JOIN bez zadání podmínky spojení?
Odpovědět:
Použití těchto operací spojení bez podmínky spojení povede ke kartézskému produktu, kde je každý řádek z levé tabulky kombinován s každým řádkem z pravé tabulky, což může vést k velké a neefektivní sadě výsledků.
Otázka 5: Existují další typy spojení SQL?
Odpovědět:
Ano, SQL podporuje různé typy spojení, včetně INNER JOIN, RIGHT JOIN, FULL OUTER JOIN a CROSS JOIN, z nichž každé slouží různým účelům při kombinování dat z více tabulek.