SQL sistemoje LEFT JOIN ir LEFT OUTER JOIN naudojami duomenims iš dviejų ar daugiau lentelių sujungti pagal susijusį stulpelį, tačiau iš esmės tai yra ta pati operacija ir tarp jų nėra jokio praktinio skirtumo. Raktinis žodis OUTER yra neprivalomas daugumoje duomenų bazių sistemų, įskaitant tokias populiarias kaip MySQL, PostgreSQL ir SQL Server.

Kairysis sujungimas arba kairysis išorinis sujungimas
Kairė prisijungti
A SQL operacija, kuri sujungia dvi lenteles, rodančias visas kairiosios lentelės eilutes ir atitinkamas eilutes iš dešinės lentelės. Jei dešinėje lentelėje nėra atitikmenų, jis rodomas NULL vertybes.
Sintaksė
PASIRINKTI * IŠ 1 lentelės
LEFT JOIN Table2 ON Table1.columnName = Table2.columnName;
Kairė išorinė jungtis
Kita SQL operacija, kuri iš esmės yra identiška LEFT JOIN. Jis taip pat sujungia lenteles, rodydamas visas kairiosios lentelės eilutes ir atitinkamas dešiniosios lentelės eilutes. Jei dešinėje lentelėje nėra atitikties, rodomos NULL reikšmės.
Sintaksė
PASIRINKTI * IŠ 1 lentelės
LEFT OUTTER JOIN Table2 ON Table1.columnName = Table2.columnName;
LEFT JOIN ir LEFT OUTER JOIN iš esmės yra tas pats dalykas SQL. Jie abu sujungia duomenis iš dviejų lentelių, rodydami visas kairiosios lentelės eilutes ir atitinkamas eilutes iš dešinės lentelės. Jei tinkamoje lentelėje nėra atitikties, jos rodo NULL reikšmes. Vienintelis skirtumas yra terminologija: LEFT JOIN naudojamas kai kuriose duomenų bazėse, pvz MySQL , o LEFT OUTER JOIN naudojamas kitose, pavyzdžiui, SQL Server. Gilesniu būdu System.out.print() naudojamas java, tuo pačiu metu spausdinimas naudojamas python, bet abu atspindi tą pačią išvestį. Taigi, tik klausimas, kuriam terminui jūsų duomenų bazės sistema teikia pirmenybę, tačiau rezultatas yra identiškas.
Prieš pasinerdami į pavyzdžius, sukurkime duomenis, reikalingus kairiajam išoriniam sujungimui ir kairiajam sujungimui atlikti.
1 veiksmas: sukurkite duomenų bazę
create database geeksforgeeks; use geeksforgeeks;>
2 veiksmas: sukurkite lentelę pavadinimu athelete
create table atheletes(Id int, Name varchar(20), AtheleteNO int, primary key(Id) );>
3 veiksmas: įterpkite vertes į lentelę 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);>
4 veiksmas: sukurkite lentelę pavadinimu Taškai
CREATE TABLE Points(ID INT, Score INT,AtheleteID INT, PRIMARY KEY (ID) );>
5 veiksmas: įrašykite reikšmes į lentelę Taškai
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);>
Dabar sėkmingai sukūrėme lentelę athelete ir Taškai už prisijungimų operaciją.
Pavyzdys:
Naudojant kairįjį išorinį sujungimą, užklausa bus įvykdyta.
Užklausa
SELECT * FROM atheletes LEFT OUTER JOIN Points ON atheletes.ID = Points.AtheleteID;>
Išvestis
Id | vardas | Sportininkas NR | ID | Rezultatas | AtheleteID |
---|---|---|---|---|---|
1 Word greitosios prieigos įrankių juosta | Abišeikas | 27 | 1 | 270 | 1 |
2 | Niyas | 27 | 2 | 297 | 2 |
3 | Juozapas | 29 | 3 | 210 | 3 |
4 | Chuanas | 24 | 4 | 180 | 4 |
Pavyzdys:
Naudojant kairįjį sujungimą, užklausa bus vykdoma.
Užklausa
SELECT * FROM atheletes LEFT JOIN Points ON atheletes.ID = Points.AtheleteID;>
Išvestis
Id | vardas | Sportininkas NR | ID | Rezultatas | AtheleteID |
---|---|---|---|---|---|
1 | Abišeikas | 27 | 1 | 270 | 1 |
2 | Niyas | 27 | 2 | 297 | 2 |
3 | Juozapas | 29 | 3 | 210 | 3 |
4 | Chuanas | 24 | 4 | 180 | 4 |
Išvada
SQL kalboje LEFT JOIN ir LEFT OUTER JOIN iš esmės yra ta pati operacija, skiriasi tik terminologija. Abi operacijos sujungia duomenis iš dviejų lentelių, rodydamos visas kairiosios lentelės eilutes ir atitinkamas dešiniosios lentelės eilutes, o nesutampančių eilučių reikšmes rodydami NULL. Nepriklausomai nuo jūsų duomenų bazės sistemoje vartojamo termino, rezultatas išlieka identiškas.
DUK apie kairįjį sujungimą ir kairįjį išorinį sujungimą
1 klausimas: Ar yra kokių nors našumo skirtumų tarp LEFT JOIN ir LEFT OUTTER JOIN?
Atsakymas:
Ne, našumo skirtumo nėra. Šie terminai yra keičiami, o duomenų bazės optimizavimo priemonė juos tvarko taip pat.
2 klausimas: Ar galiu naudoti LEFT JOIN arba LEFT OUTTER JOIN su daugiau nei dviem lentelėmis?
Atsakymas:
Taip, šias sujungimo operacijas galite naudoti su keliomis lentelėmis išplėsdami sintaksę, nurodydami kiekvienos lentelės sujungimo sąlygas.
abstrakčioje klasėje gali būti konstruktorius
3 klausimas: Ar visos duomenų bazių sistemos palaiko ir LEFT JOIN, ir LEFT OUTER JOIN?
Atsakymas:
Plačiausiai naudojamos duomenų bazių sistemos, įskaitant MySQL, PostgreSQL ir SQL Server, palaiko ir LEFT JOIN, ir LEFT OUTER JOIN. Tačiau būtina patikrinti konkrečios duomenų bazės dokumentacijos suderinamumą.
4 klausimas: Kas atsitiks, jei naudosiu LEFT JOIN arba LEFT OUTER JOIN nenurodydamas prisijungimo sąlygos?
Atsakymas:
Naudojant šias sujungimo operacijas be sujungimo sąlygos, bus sukurtas Dekarto produktas, kuriame kiekviena kairiosios lentelės eilutė yra derinama su kiekviena dešiniosios lentelės eilute, todėl gali susidaryti didelis ir neefektyvus rezultatų rinkinys.
5 klausimas: Ar yra kitų SQL sujungimų tipų?
Atsakymas:
Taip, SQL palaiko įvairius sujungimų tipus, įskaitant VIDINĮ SUJUNGIMĄ, DEŠINĮ SUJUNGIMĄ, VISĄ IŠORINĮ SUJUNGIMĄ ir KRYŽIAMĄ SUJUNGIMĄ, kurių kiekvienas tarnauja skirtingais tikslais derinant duomenis iš kelių lentelių.