logo

Lewe łączenie zewnętrzne SQL vs łączenie lewe

W języku SQL zarówno LEFT JOIN, jak i LEFT OUTER JOIN służą do łączenia danych z dwóch lub więcej tabel w oparciu o powiązaną kolumnę, ale zasadniczo są to te same operacje i nie ma między nimi praktycznej różnicy. Słowo kluczowe OUTER jest opcjonalne w większości systemów baz danych, w tym w popularnych, takich jak MySQL, PostgreSQL i SQL Server.

Dołącz do lewego

Lewe połączenie lub lewe połączenie zewnętrzne



Lewe dołączenie

A SQL operacja łącząca dwie tabele, pokazująca wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Jeżeli w prawej tabeli nie ma dopasowania, zostanie ono wyświetlone ZERO wartości.

Składnia

WYBIERZ * Z Tabeli 1

LEFT JOIN Tabela2 ONNazwa_tabeli1.kolumny = nazwa_kolumny tabeli2;



Lewe połączenie zewnętrzne

Kolejna operacja SQL, która jest koncepcyjnie identyczna z LEFT JOIN. Łączy także tabele, pokazując wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Jeśli w prawej tabeli nie ma dopasowania, wyświetlane są wartości NULL.

Składnia

WYBIERZ * Z Tabeli 1

LEWY ZEWNĘTRZNY JOIN Tabela2 ON Tabela1.nazwakolumny = Tabela2.nazwakolumny;



LEFT JOIN i LEFT OUTER JOIN to zasadniczo to samo w SQL. Obydwa łączą dane z dwóch tabel, pokazując wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli. Jeśli w prawej tabeli nie ma dopasowania, wyświetlane są wartości NULL. Jedyna różnica polega na terminologii: LEFT JOIN jest używane w niektórych bazach danych, np MySQL'a , podczas gdy LEFT OUTER JOIN jest używany w innych, takich jak SQL Server. W głębszy sposób System.out.print() używany w Javie, w tym samym czasie print używany w Pythonie, ale oba odzwierciedlają ten sam wynik. Zatem jest to tylko kwestia tego, jaki termin preferuje Twój system bazy danych, ale wynik jest identyczny.

przekonwertuj str na int

Zanim przejdziemy do przykładów, utwórzmy dane wymagane do wykonania lewego złączenia zewnętrznego i lewego złączenia.

Krok 1: Utwórz bazę danych

create database geeksforgeeks; use geeksforgeeks;>

Krok 2: Utwórz tabelę o nazwie athelete

create table atheletes(Id int, Name varchar(20),  AtheleteNO int, primary key(Id) );>

Krok 3: Wstaw wartości do tabeli 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: Utwórz tabelę o nazwie Punkty

CREATE TABLE Points(ID INT, Score INT,AtheleteID INT,   PRIMARY KEY (ID) );>

Krok 5: Wstaw wartości do tabeli Punkty

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);>

Teraz pomyślnie utworzyliśmy tabelę atleta i punkty dla operacji łączenia.

Przykład:

Korzystając z lewego sprzężenia zewnętrznego, zapytanie zostanie wykonane.

Zapytanie

SELECT * FROM atheletes   LEFT OUTER JOIN Points ON  atheletes.ID = Points.AtheleteID;>

Wyjście

ID

Nazwa

Sportowiec NIE

ID

Wynik

AtheleteID

1

Abiszeik

27

1

270

1

2

Niyas

27

2

297

2

3

Józef

29

3

210

polecenia git dla push

3

4

Juana

24

4

180

4

Przykład:

Korzystając z lewego sprzężenia, zapytanie zostanie wykonane.

Zapytanie

SELECT * FROM atheletes   LEFT JOIN Points ON  atheletes.ID = Points.AtheleteID;>

Wyjście

ID

Nazwa

Sportowiec NIE

ID

Wynik

AtheleteID

1

Abiszeik

27

livecricket.is

1

270

1

2

Niyas

27

2

297

2

3

Józef

komentarz CSS

29

3

210

3

4

Juana

24

4

180

4

Wniosek

W języku SQL LEFT JOIN i LEFT OUTER JOIN są w zasadzie tą samą operacją, różnią się jedynie terminologią. Obie operacje łączą dane z dwóch tabel, wyświetlając wszystkie wiersze z lewej tabeli i pasujące wiersze z prawej tabeli, jednocześnie pokazując wartości NULL dla niepasujących wierszy. Niezależnie od terminu użytego w systemie bazy danych wynik pozostaje identyczny.

Często zadawane pytania dotyczące lewego łączenia i lewego łączenia zewnętrznego

P.1: Czy jest jakaś różnica w wydajności pomiędzy LEFT JOIN i LEFT OUTER JOIN?

Odpowiedź:

Nie, nie ma różnicy w wydajności. Terminy te są zamienne i optymalizator bazy danych obsługuje je w ten sam sposób.

P.2: Czy mogę używać LEFT JOIN lub LEFT OUTER JOIN w przypadku więcej niż dwóch tabel?

Odpowiedź:

Tak, możesz używać tych operacji łączenia z wieloma tabelami, rozszerzając składnię i określając warunki łączenia dla każdej tabeli.

P.3: Czy wszystkie systemy baz danych obsługują zarówno LEFT JOIN, jak i LEFT OUTER JOIN?

Odpowiedź:

Najpopularniejsze systemy baz danych, w tym MySQL, PostgreSQL i SQL Server, obsługują zarówno LEFT JOIN, jak i LEFT OUTER JOIN. Jednakże istotne jest sprawdzenie dokumentacji konkretnej bazy danych pod kątem kompatybilności.

P.4: Co się stanie, jeśli użyję LEFT JOIN lub LEFT OUTER JOIN bez określenia warunku złączenia?

Odpowiedź:

Użycie tych operacji łączenia bez warunku łączenia spowoduje powstanie iloczynu kartezjańskiego, w którym każdy wiersz z lewej tabeli jest łączony z każdym wierszem z prawej tabeli, co potencjalnie prowadzi do dużego i nieefektywnego zestawu wyników.

P.5: Czy istnieją inne typy złączeń SQL?

Odpowiedź:

Tak, SQL obsługuje różne typy złączeń, w tym INNER JOIN, RIGHT JOIN, FULL OUTER JOIN i CROSS JOIN, przy czym każdy z nich służy innym celom w łączeniu danych z wielu tabel.