V SQL se tako LEFT JOIN kot LEFT OUTER JOIN uporabljata za združevanje podatkov iz dveh ali več tabel na podlagi povezanega stolpca, vendar sta v bistvu enaki operaciji in med njima ni nobene praktične razlike. Ključna beseda OUTER je neobvezna v večini sistemov baz podatkov, vključno s priljubljenimi, kot so MySQL, PostgreSQL in SQL Server.

Levi spoj ali levi zunanji spoj
Levo Pridružite se
A SQL operacija, ki združuje dve tabeli, prikazuje vse vrstice iz leve tabele in ujemajoče se vrstice iz desne tabele. Če v desni tabeli ni ujemanja, se prikaže NIČ vrednote.
Sintaksa
IZBERI * IZ Tabele1
LEFT JOIN Table2 ON Table1.columnName = Table2.columnName;
Levi zunanji spoj
Druga operacija SQL, ki je konceptualno enaka LEFT JOIN. Prav tako združuje tabele, prikazuje vse vrstice iz leve tabele in ujemajoče se vrstice iz desne tabele. Če v desni tabeli ni ujemanja, prikaže vrednosti NULL.
Sintaksa
IZBERI * IZ Tabele1
LEFT OUTER JOIN Table2 ON Table1.columnName = Table2.columnName;
LEFT JOIN in LEFT OUTER JOIN sta v bistvu ista stvar v SQL. Oba združujeta podatke iz dveh tabel, prikazujeta vse vrstice iz leve tabele in ujemajoče se vrstice iz desne tabele. Če v desni tabeli ni ujemanja, prikažejo vrednosti NULL. Edina razlika je terminologija: LEFT JOIN se uporablja v nekaterih zbirkah podatkov, kot je MySQL , medtem ko se LEFT OUTER JOIN uporablja v drugih, kot je SQL Server. Na globlji način se System.out.print() uporablja v Javi, istočasno pa se tiskanje uporablja v Pythonu, vendar oba odražata isti rezultat. Torej je samo vprašanje, kateri izraz ima vaš sistem zbirke podatkov raje, vendar je rezultat enak.
Preden se poglobimo v primere, ustvarimo podatke, ki so potrebni za izvedbo levega zunanjega in levega združevanja.
1. korak: Ustvarite zbirko podatkov
create database geeksforgeeks; use geeksforgeeks;>
2. korak: Ustvarite tabelo z imenom athelete
create table atheletes(Id int, Name varchar(20), AtheleteNO int, primary key(Id) );>
3. korak: Vstavite vrednosti v tabelo 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. korak: Ustvarite tabelo z imenom Točke
CREATE TABLE Points(ID INT, Score INT,AtheleteID INT, PRIMARY KEY (ID) );>
5. korak: Vstavite vrednosti v tabelo Točke
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);>
Zdaj smo uspešno ustvarili tabelo athelete in točke za operacijo združevanja.
primer:
Z uporabo levega zunanjega spoja bo poizvedba izvedena.
Poizvedba
SELECT * FROM atheletes LEFT OUTER JOIN Points ON atheletes.ID = Points.AtheleteID;>
Izhod
Id | Ime | Športnik ŠT | ID | rezultat | AtheleteID |
---|---|---|---|---|---|
1 | Abishejk | 27 | 1 | 270 | 1 |
2 alfa beta obrezovanje | Niyas | 27 | 2 | 297 | 2 |
3 | Jožef | 29 | 3 | 210 | 3 |
4 | Juan | 24 | 4 | 180 | 4 |
primer:
Z uporabo levega spoja bo poizvedba izvedena.
Poizvedba
SELECT * FROM atheletes LEFT JOIN Points ON atheletes.ID = Points.AtheleteID;>
Izhod
Id | Ime | Športnik ŠT | ID | rezultat | AtheleteID |
---|---|---|---|---|---|
1 zamenjava niza javascript | Abishejk | 27 | 1 | 270 | 1 |
2 | Niyas | 27 | 2 | 297 | 2 |
3 | Jožef numpy linspace | 29 | 3 | 210 | 3 |
4 | Juan | 24 | 4 | 180 | 4 |
Zaključek
V SQL sta LEFT JOIN in LEFT OUTER JOIN v bistvu enaki operaciji, razlikujeta se le v terminologiji. Obe operaciji združujeta podatke iz dveh tabel, prikazujeta vse vrstice iz leve tabele in ujemajoče se vrstice iz desne tabele, medtem ko prikazujeta vrednosti NULL za neujemajoče se vrstice. Ne glede na izraz, uporabljen v vašem sistemu baze podatkov, ostane rezultat enak.
Pogosta vprašanja o levem združevanju v primerjavi z levim zunanjim združevanjem
V.1: Ali obstaja kakšna razlika v zmogljivosti med LEFT JOIN in LEFT OUTER JOIN?
odgovor:
Ne, ni razlike v zmogljivosti. Ti izrazi so zamenljivi in optimizator baze podatkov jih obravnava na enak način.
V.2: Ali lahko uporabim LEFT JOIN ali LEFT OUTER JOIN z več kot dvema tabelama?
odgovor:
Da, te operacije združevanja lahko uporabite z več tabelami, tako da razširite sintakso in določite pogoje združevanja za vsako tabelo.
V.3: Ali vsi sistemi baz podatkov podpirajo tako LEFT JOIN kot LEFT OUTER JOIN?
odgovor:
Najpogosteje uporabljeni sistemi podatkovnih baz, vključno z MySQL, PostgreSQL in SQL Server, podpirajo tako LEFT JOIN kot LEFT OUTER JOIN. Vendar pa je bistveno, da preverite združljivost vaše posebne dokumentacije zbirke podatkov.
V.4: Kaj se zgodi, če uporabim LEFT JOIN ali LEFT OUTER JOIN, ne da bi določil pogoj združevanja?
odgovor:
Uporaba teh operacij združevanja brez pogoja združevanja bo povzročila kartezični produkt, kjer je vsaka vrstica iz leve tabele kombinirana z vsako vrstico iz desne tabele, kar lahko vodi do velikega in neučinkovitega niza rezultatov.
V.5: Ali obstajajo druge vrste združevanj SQL?
odgovor:
Da, SQL podpira različne vrste združevanj, vključno z INNER JOIN, RIGHT JOIN, FULL OUTER JOIN in CROSS JOIN, od katerih ima vsak različne namene pri združevanju podatkov iz več tabel.