Združevanje tabel ali združevanje tabel je znana funkcija relacijskih baz podatkov in je neverjetno zmogljiva. Omogoča nam, da združimo informacije iz več virov, da ustvarimo bolj koherentne in smiselne vpoglede v podatke. Omogoča tudi, da so relacijske baze podatkov zelo razširljive (ne prilagodljive), saj lahko podatke razdelimo na manjše, obvladljive dele, na katere se lahko pozneje sklicujemo.
V tej vadnici bomo obravnavali osnove združevanja tabel ali spajanja tabel. Oglejmo si vzorce tabel iz resničnega sveta, da utrdimo naše znanje.
Vzorčna tabela
Preden gremo v svet združevanja tabel, nastavimo osnovne tabele, ki jih bomo uporabili v predstavitvene namene.
Razmislite o dveh tabelah, ki vsebujeta informacije o zaposlenih in plačah, kot je prikazano v naslednjih primerih poizvedb:
CREATE TABLE zaposleni (
Emploee_id INT AUTO_INCREMENT PRIMARNI KLJUČ,
ime VARCHAR( petdeset ),
priimek VARCHAR( petdeset ),
oddelek VARCHAR( petdeset )
);
Nato lahko vzorčne podatke vstavimo v tabelo zaposlenega, kot je prikazano v naslednjih poizvedbah:
INSERT INTO zaposleni (ime, priimek, oddelek) VREDNOSTI
( 'Alice' , 'Smith' , 'Človeški viri' ),
( 'Bob' , 'Johnson' , 'trženje' ),
( 'Charlie' , 'Wilson' , 'Finance' ),
( 'David' , 'Rjav' , 'Prodaja' ),
( 'Eva' , 'Davis' , 'Inženiring' );
Nadaljujmo in ustvarimo novo tabelo za shranjevanje podatkov o plačah, kot sledi:
CREATE TABLE plače (salary_id INT AUTO_INCREMENT PRIMARNI KLJUČ,
Emploee_id INT,
plača DECIMALNO( 10 , 2 ),
začetni_datum DATE,
končni_datum DATE,
TUJI KLJUČ (employee_id) REFERENCE zaposleni (employee_id)
);
V tabelo dodajte vzorčne podatke na naslednji način:
INSERT INTO plače (employee_id, salary, start_date, end_date) VREDNOSTI
( 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 moralo zagotoviti dve tabeli, ki nam lahko pomagata prikazati koncept združevanja/združevanja tabel v SQL.
Spajanje/združevanje tabel SQL
Raziščimo različne vrste združevanja tabel, ki jih lahko izvedemo. Pokrivali bomo temeljne, ko bomo napredovali do naprednejših.
NOTRANJI SPOJ
Prva in najpogostejša vrsta združevanja tabel v SQL je INNER JOIN. INNER JOIN nam omogoča združevanje vrstic iz dveh tabel na podlagi določenega pogoja. Ta vrsta nato vrne samo vrstice, v katerih je ujemanje med tabelami.
Vzemimo za primer tabele »zaposleni« in »plače«, ki smo ju ustvarili prej. Za izvedbo INNER JOIN v SQL uporabimo klavzulo INNER JOIN na naslednji način:
IZBERIe.imployee_id,
e.ime,
e.priimek,
e.oddelek,
s.plača
OD
zaposleni e
INNER JOIN plače s VKLOP
e.employee_id = s.employee_id;
V danem primeru poizvedbe uporabljamo INNER JOIN za združitev tabel »zaposleni« in »plače« v stolpcu »employee_id«, ki obstaja v obeh tabelah. Nastali niz vsebuje samo ujemajoče se vrstice iz obeh tabel.
Primer izhoda je naslednji:
LEVI ZUNANJI SPOJ
Imamo tudi LEVI ZUNANJI SPOJ, ki združuje vse vrstice iz leve tabele in ustrezne vrstice iz desne tabele. Če v desni tabeli ni ujemanja, združevanje uporabi vrednost NULL.
IZBERIe.imployee_id,
e.ime,
e.priimek,
e.oddelek,
s.plača
OD
zaposleni e
LEVO JOIN plače s
VKLOP
e.employee_id = s.employee_id;
V tem primeru izvedemo LEFT OUTER JOIN, da združimo tabele »zaposleni« in »plače«. Vključene so vse vrstice iz tabele »zaposleni« in dodane ustrezne vrstice iz tabele »plače«. Vendar so vrednosti NULL vključene v stolpec »plača« za vrstice, ki se ne ujemajo.
SQL UNION
Drug način združevanja tabel v SQL je uporaba operatorja UNION. Ta operator nam omogoča združevanje rezultatov dveh ali več izbirnih stavkov v en sam niz rezultatov.
Stolpci v vsakem stavku SELECT morajo imeti isti tip podatkov, da je unija uporabna.
Primer je naslednji:
IZBERI id_zaposlenega, ime, priimek, oddelek, NULL AS plačaOD zaposlenih e
UNION
IZBERI id_zaposlenega, NULL AS ime, NULL AS priimek, NULL AS oddelek, plača
OD plač s ;
V tem primeru UNION združi tabeli »zaposleni« in »plače«. Nato ustvarimo stolpce NULL v vsakem stavku SELECT, da zagotovimo, da imata obe tabeli podobno število stolpcev.
UNIONI so tehnično običajni, vendar so lahko uporabni, zlasti ko morate združiti tabele z različnimi strukturami.
Zaključek
V tej vadnici smo raziskali osnove združevanja/združevanja dveh tabel v en niz rezultatov. Dobro je imeti v mislih, da je v tej objavi veliko bolj naprednih združitev.