logo

SQL kairysis išorinis sujungimas vs kairysis sujungimas

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.

Kairė prisijungti

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ų.