Spajanje tablica ili spajanje tablica poznata je značajka relacijskih baza podataka i nevjerojatno je moćna. Omogućuje nam konsolidaciju informacija iz više izvora kako bismo stvorili koherentnije i smislenije uvide u podatke. Također omogućuje relacijskim bazama podataka da budu visoko skalabilne (ne fleksibilne) jer podatke možemo rastaviti na manje upravljive dijelove na koje se kasnije možemo pozivati.
U ovom vodiču pokrit ćemo osnove spajanja tablica ili spajanja tablica. Pogledajmo uzorke tablica iz stvarnog svijeta kako bismo učvrstili svoje znanje.
Tablica uzorka
Prije nego krenemo u svijet spajanja tablica, postavimo osnovne tablice koje ćemo koristiti u demonstracijske svrhe.
Razmotrite dvije tablice koje sadrže podatke o zaposlenicima i plaćama kao što je prikazano u sljedećim primjerima upita:
CREATE TABLE zaposlenici (
employee_id INT AUTO_INCREMENT PRIMARNI KLJUČ,
ime VARCHAR( pedeset ),
prezime VARCHAR( pedeset ),
odjel VARCHAR( pedeset )
);
Zatim možemo umetnuti uzorke podataka u tablicu zaposlenika kao što je prikazano u sljedećim upitima:
INSERT INTO zaposlenici (ime, prezime, odjel) VRIJEDNOSTI
( 'Alice' , 'Smith' , 'Ljudski resursi' ),
( 'Bob' , 'Johnson' , 'Marketing' ),
( 'Charlie' , 'Wilson' , 'Financije' ),
( 'David' , 'smeđa' , 'Prodajni' ),
( 'Eva' , 'Davis' , 'Inženjering' );
Nastavimo i stvorimo novu tablicu za pohranu podataka o plaći na sljedeći način:
CREATE TABLE plaće (salary_id INT AUTO_INCREMENT PRIMARY KEY,
Emploee_id INT,
DECIMALNA plaća( 10 , 2 ),
početni_datum DATE,
završni_datum DATE,
FOREIGN KEY (employee_id) REFERENCE zaposlenici (employee_id)
);
Dodajte podatke uzorka umetanja u tablicu na sljedeći način:
INSERT INTO plaće (employee_id, salary, start_date, end_date) VRIJEDNOSTI
( 1 , 60000,00 , '2023-01-01' , '31.12.2023' ),
( 2 , 55000,00 , '2023-01-01' , '31.12.2023' ),
( 3 , 65000,00 , '2023-01-01' , '31.12.2023' ),
( 4 , 58000,00 , '2023-01-01' , '31.12.2023' ),
( 5 , 70000,00 , '2023-01-01' , '31.12.2023' );
To bi nam trebalo pružiti dvije tablice koje nam mogu pomoći da demonstriramo koncept spajanja/spajanja tablica u SQL-u.
SQL spajanje tablica/spajanje tablica
Istražimo razne vrste spajanja tablica koje možemo učiniti. Pokrit ćemo temeljne kako budemo napredovali do naprednijih.
UNUTARNJI SPOJ
Prva i najčešća vrsta spajanja tablica u SQL-u je INNER JOIN. INNER JOIN nam omogućuje kombiniranje redaka iz dvije tablice na temelju određenog uvjeta. Ovaj tip zatim vraća samo retke u kojima postoji podudaranje između tablica.
Uzmimo tablice 'zaposlenici' i 'plaće' koje smo ranije izradili kao primjere. Da bismo izvršili INNER JOIN u SQL-u, koristimo klauzulu INNER JOIN na sljedeći način:
IZABERIe.employee_id,
e.ime,
e.prezime,
e.odjel,
s.plaća
IZ
zaposlenici e
INNER JOIN plaće s NA
e.imployee_id = s.employee_id;
U navedenom primjeru upita koristimo INNER JOIN za spajanje tablica 'zaposlenici' i 'plaće' u stupcu 'employee_id' koji postoji u obje tablice. Rezultirajući skup sadrži samo podudarne retke iz obje tablice.
Primjer izlaza je sljedeći:
LIJEVI VANJSKI SPOJ
Imamo i LEFT OUTER JOIN koji kombinira sve retke iz lijeve tablice i odgovarajuće retke iz desne tablice. Ako nema podudaranja u desnoj tablici, spajanje koristi vrijednost NULL.
IZABERIe.employee_id,
e.ime,
e.prezime,
e.odjel,
s.plaća
IZ
zaposlenici e
LIJEVO PRIDRUŽI plaće s
NA
e.imployee_id = s.employee_id;
U ovom primjeru izvodimo LEFT OUTER JOIN kako bismo spojili tablice 'zaposlenici' i 'plaće'. Svi retci iz tablice 'zaposlenici' su uključeni i dodani su odgovarajući retci iz tablice 'plaće'. Međutim, vrijednosti NULL uključene su u stupac 'plaća' za retke koji se ne podudaraju.
SQL UNIJA
Drugi način spajanja tablica u SQL-u je korištenje operatora UNION. Ovaj nam operator omogućuje kombiniranje rezultata dviju ili više naredbi odabira u jedan skup rezultata.
Stupci u svakoj SELECT izjavi moraju imati isti tip podataka da bi unija bila primjenjiva.
Primjer je sljedeći:
SELECT id_zaposlenika, ime, prezime, odjel, NULL AS plaćaOD zaposlenika e
UNIJA
SELECT id_zaposlenika, NULL AS ime, NULL AS prezime, NULL AS odjel, plaća
OD plaće s ;
U ovom slučaju UNION spaja tablice 'zaposlenici' i 'plaće'. Zatim stvaramo stupce NULL u svakoj izjavi SELECT kako bismo osigurali da obje tablice imaju sličan broj stupaca.
UNIONI su tehnički uobičajeni, ali mogu biti korisni posebno kada trebate spojiti tablice s različitim strukturama.
Zaključak
U ovom vodiču istražili smo osnove spajanja/spajanja dviju tablica u jedan skup rezultata. Dobro je imati na umu da postoji mnogo naprednijih spojeva o kojima se govori u ovom postu.