logo

SQL kreisā ārējā savienošana vs kreisais savienojums

SQL gan LEFT JOIN, gan LEFT OUTER JOIN tiek izmantoti, lai apvienotu datus no divām vai vairākām tabulām, pamatojoties uz saistītu kolonnu, taču tās būtībā ir viena un tā pati darbība, un starp tām nav praktiskas atšķirības. Atslēgvārds OUTER nav obligāts lielākajā daļā datu bāzes sistēmu, tostarp populārajās, piemēram, MySQL, PostgreSQL un SQL Server.

Pa kreisi pievienoties

Kreisais savienojums vai kreisais ārējais savienojums



Pa kreisi pievienoties

A SQL darbība, kas apvieno divas tabulas, parādot visas rindas no kreisās tabulas un atbilstošās rindas no labās tabulas. Ja labajā tabulā nav atbilstības, tas tiek parādīts NULL vērtības.

k tuvākais kaimiņš

Sintakse

IZVĒLĒTIES * NO 1. tabulas

LEFT JOIN Table2 ON Table1.columnName = Table2.columnName;



Kreisais ārējais savienojums

Vēl viena SQL darbība, kas konceptuāli ir identiska LEFT JOIN. Tas arī apvieno tabulas, parādot visas rindas no kreisās tabulas un atbilstošās rindas no labās tabulas. Ja labajā tabulā nav atbilstības, tā parāda NULL vērtības.

Sintakse

IZVĒLĒTIES * NO 1. tabulas

LEFT OUTTER JOIN Table2 ON Table1.columnName = Table2.columnName;



LEFT JOIN un LEFT OUTER JOIN būtībā ir viens un tas pats SQL. Tie abi apvieno datus no divām tabulām, parādot visas rindas no kreisās tabulas un atbilstošās rindas no labās tabulas. Ja labajā tabulā nav atbilstības, tās parāda NULL vērtības. Vienīgā atšķirība ir terminoloģijā: LEFT JOIN tiek izmantots dažās datubāzēs, piemēram MySQL , savukārt LEFT OUTTER JOIN tiek izmantots citos, piemēram, SQL Server. Padziļinātākā veidā System.out.print() tiek izmantots Java, tajā pašā laikā druka, ko izmanto python, bet abi atspoguļo vienu un to pašu izvadi. Tātad, tas ir tikai jautājums, kuram terminam jūsu datu bāzes sistēma dod priekšroku, taču rezultāts ir identisks.

Pirms iedziļināšanās piemēros izveidosim datus, kas nepieciešami, lai veiktu kreiso ārējo un kreiso savienojumu.

1. darbība: izveidojiet datu bāzi

create database geeksforgeeks; use geeksforgeeks;>

2. darbība: izveidojiet tabulu ar nosaukumu athelete

create table atheletes(Id int, Name varchar(20),  AtheleteNO int, primary key(Id) );>

3. solis: ievietojiet vērtības tabulā 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. darbība: izveidojiet tabulu ar nosaukumu Punkti

CREATE TABLE Points(ID INT, Score INT,AtheleteID INT,   PRIMARY KEY (ID) );>

5. solis: ievietojiet vērtības tabulā Punkti

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);>

Tagad esam veiksmīgi izveidojuši tabulu athelete un Punkti pievienošanās operācijai.

Piemērs:

Izmantojot kreiso ārējo savienojumu, vaicājums tiks izpildīts.

Vaicājums

SELECT * FROM atheletes   LEFT OUTER JOIN Points ON  atheletes.ID = Points.AtheleteID;>

Izvade

Id

Vārds

Sportists NĒ

ID

Rezultāts

AtheleteID

1

Abišeiks

27

1

270

1

2

Niyas

27

2

297

2

3

Jāzeps

29

3

210

3

4

Huans

24

4

180

4

Piemērs:

Izmantojot kreiso savienojumu, vaicājums tiks izpildīts.

Vaicājums

SELECT * FROM atheletes   LEFT JOIN Points ON  atheletes.ID = Points.AtheleteID;>

Izvade

Id

Vārds

Sportists NĒ

ID

Rezultāts

AtheleteID

1

Abišeiks

27

1

270

1

cilpai c

2

Niyas

27

2

297

2

3

Jāzeps

java virknes

29

3

210

3

4

Huans

24

4

180

4

Secinājums

SQL valodā LEFT JOIN un LEFT OUTER JOIN būtībā ir viena un tā pati darbība, kas atšķiras tikai terminoloģijas ziņā. Abas darbības apvieno datus no divām tabulām, parādot visas rindas no kreisās tabulas un atbilstošās rindas no labās tabulas, vienlaikus parādot NULL vērtības neatbilstošām rindām. Neatkarīgi no jūsu datu bāzes sistēmā lietotā termina rezultāts paliek identisks.

Bieži uzdotie jautājumi par kreiso pievienošanu un kreiso ārējo savienojumu

1. J. Vai ir kāda veiktspējas atšķirība starp LEFT JOIN un LEFT OUTTER JOIN?

Atbilde:

Nē, veiktspējas atšķirības nav. Šie termini ir savstarpēji aizstājami, un datu bāzes optimizētājs tos apstrādā vienādi.

2. J. Vai varu izmantot LEFT JOIN vai LEFT OUTTER JOIN ar vairāk nekā divām tabulām?

Atbilde:

Jā, varat izmantot šīs savienošanas darbības ar vairākām tabulām, paplašinot sintaksi, norādot katras tabulas savienošanas nosacījumus.

3. jautājums: Vai visas datu bāzes sistēmas atbalsta gan LEFT JOIN, gan LEFT OUTTER JOIN?

Atbilde:

Visplašāk izmantotās datu bāzes sistēmas, tostarp MySQL, PostgreSQL un SQL Server, atbalsta gan LEFT JOIN, gan LEFT OUTTER JOIN. Tomēr ir svarīgi pārbaudīt savas datu bāzes dokumentācijas saderību.

4. jautājums: Kas notiek, ja izmantoju LEFT JOIN vai LEFT OUTTER JOIN, nenorādot pievienošanās nosacījumu?

Atbilde:

Izmantojot šīs savienošanas darbības bez savienošanas nosacījuma, tiks izveidots Dekarta reizinājums, kurā katra rinda no kreisās tabulas tiek apvienota ar katru rindu no labās tabulas, kas, iespējams, novedīs pie lielas un neefektīvas rezultātu kopas.

5. jautājums: Vai ir arī citi SQL savienojumu veidi?

Atbilde:

Jā, SQL atbalsta dažāda veida savienojumus, tostarp IEKŠĒJO SAVIENOŠANOS, RIGHT JOIN, FULL OUTER JOIN un CROSS JOIN, un katrs no tiem kalpo dažādiem mērķiem, apvienojot datus no vairākām tabulām.