logo

Levi zunanji spoj SQL proti levemu spoju

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.

Leva pridružitev

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.