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.

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.