logo

SQL Left Outer Join vs Left Join

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ý spoj

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.