Ključna razlika: Spajanje u SQL izvodi se kako bi se kombinirali podaci iz dvije različite tablice. Unutarnje spajanje je uvjet koji rezultira redovima koji zadovoljavaju 'gdje' klauzulu u "svim tablicama"; budući da je vanjski član uvjet koji rezultira tim redovima koji zadovoljavaju klauzulu „gdje“ u „barem jednoj tablici“.
Prilikom implementacije pridruživanja stvaraju se privremene tablice koje se temelje na stupcima. Uvijek bi trebalo postojati dvije tablice za uvjete pridruživanja. Ovi uvjeti, zatim spajaju odgovarajuće komponente jedne tablice s drugim komponentama, i dovode do potpuno nove tablice. Cilj ovih tablica je izdvajanje značajnih i potrebnih podataka ili informacija. Ovisno o uvjetima, postoje dvije vrste spojeva, unutarnji i vanjski spojevi.
Sintaksa SQL INNER JOIN:
SELECT ime_ stupca
FROM tablica1
Tablica INNER JOIN2
ON table1.column_name = table2.column_name;
Ključna riječ INNER JOIN odabire sve retke iz obje tablice sve dok postoji podudarnost između stupaca u obje tablice.
Unutarnje spajanje ovisi o odabiru dizajna i karakteristika baze podataka. Prema tome, ti unutarnji spojevi se koriste u Equi-Joins i Natural Joins. U Equi Join, postoji određena vrsta usporedbe koja se koristi za izjednačavanje dviju zadanih tablica. Stoga ova tablica koristi jednak predikat. Prirodno pridruživanje je vrsta Equi spoja.
Sintaksa za Equi Join je sljedeća:
S ELECT *
OD tablice 1, tablica 2
WHERE table1.coloumn_name = table2.coloumn_name;
Ako stupci u equi-join imaju isto ime, tada odgovarajuća SQL verzija daje opcionalnu skraćenicu koja se može izraziti pomoću USING konstrukta kao:
ODABERI *
FROM tablica1 tablica INNER JOIN (KORIŠTENJE INNER) 2 KORIŠTENJE (ime stupca);
Sintaksa za Natural Join je sljedeća:
ODABERI *
FROM tablica1 NATURAL JOIN tablica2;
"Vanjski spoj" ne zahtijeva uvjete podudaranja za zapise. Ovaj uvjet pridruživanja održava sve ostale zapise, osim zapisa koji nisu usklađeni. Ovo spajanje se dalje distribuira u lijevim, desnim i punim vanjskim uvjetima spajanja, koji se implementiraju prema željenim uvjetima i atributima tablice.
Lijevo vanjsko spajanje
Ključna riječ LEFT JOIN vraća sve retke iz lijeve tablice (tablica1), s odgovarajućim redovima u desnoj tablici (tablica2). To rezultira "NULL" na desnoj strani kada nema podudaranja.
Sintaksa lijevog vanjskog pridruživanja slijedi:
SELECT ime_ stupca
FROM tablica1
LEFT OUTER JOIN tablica2
ON table1.column_name = table2.column_name;
Desno Outer Join
Ključna riječ DESNO JOIN vraća sve retke s desne tablice (tablica2), s odgovarajućim redovima u lijevoj tablici (tablica 1). Rezultat je NULL na lijevoj strani kada nema podudaranja.
Sintaksa desnog vanjskog pridruživanja slijedi:
SELECT ime_ stupca
FROM tablica1
RIGHT OUTER JOIN tablica2
ON table1.column_name = table2.column_name;
Full Outer Join
Ključna riječ FULL OUTER JOIN vraća sve retke iz lijeve tablice (tablica1) i desne tablice (tablica2). Ključna riječ FULL OUTER JOIN objedinjuje rezultat spojeva LIJEVO i DESNO.
Sintaksa za Full Outer Join je:
SELECT ime_ stupca
FROM tablica1
FULL OUTER JOIN tablica2
ON table1.column_name = table2.column_name;
Usporedba između unutarnjeg spajanja i vanjskog pridruživanja:
Unutarnje spajanje | Outer Join | |
Osnovna funkcija | Unutarnji spojevi se u osnovi koriste za pronalaženje odgovarajućih redova između 2 tablice. | Outer join zadržava redove tablice ili obje tablice. |
Postojanje uobičajenih varijabli | Ovdje uobičajena varijabla mora biti obvezno u obje tablice. | Ovdje varijabla ovisi samo o prvoj tablici koja može ili ne mora biti prisutna u drugoj tablici. |
vraća | Unutarnje pridruživanje vraćat će samo retke u kojima postoji podudarnost na temelju predikata pridruživanja. | Vanjski spoj će vratiti sve retke bez obzira na to jesu li na temelju podudaranja ili nisu podudarni na temelju predikata pridruživanja. |
Naviknut | Koristi se za pregled zapisa samo kada su zapisi prisutni na obje tablice. | Koristi se za pregled svih zapisa u samo jednoj tablici. |
Primjenjivo u | Primjenjivi su u: Equi-Join i Natural Join | Primjenjuju se kao: Lijevo vanjsko spajanje Desno Outer Join Full Outer Join |