Spojenie tabuliek alebo zlúčenie tabuliek je známa funkcia relačných databáz a je neuveriteľne výkonná. Umožňuje nám to konsolidovať informácie z viacerých zdrojov a vytvárať koherentnejšie a zmysluplnejšie prehľady údajov. Umožňuje tiež, aby boli relačné databázy vysoko škálovateľné (nie flexibilné), pretože údaje môžeme rozdeliť na menšie, spravovateľné časti, na ktoré sa môžeme neskôr odvolať.
V tomto návode sa budeme zaoberať základmi spájania tabuliek alebo spájania tabuliek. Pozrime sa na vzorky tabuliek z reálneho sveta, aby sme si upevnili svoje znalosti.
Vzorová tabuľka
Predtým, než sa pustíme do sveta spájania stolov, nastavme si základné tabuľky, ktoré použijeme na demonštračné účely.
Uvažujme o dvoch tabuľkách, ktoré obsahujú informácie o zamestnancoch a platoch, ako je uvedené v nasledujúcich príkladoch dotazov:
Zamestnanci CREATE TABLE (
zamestnanec_id INT AUTO_INCREMENT PRIMÁRNY KĽÚČ,
meno VARCHAR( päťdesiat ),
priezvisko VARCHAR( päťdesiat ),
oddelenie VARCHAR( päťdesiat )
);
Potom môžeme vložiť vzorové údaje do tabuľky zamestnanca, ako je uvedené v nasledujúcich dotazoch:
INSERT INTO zamestnancov (meno, priezvisko, oddelenie) HODNOTY
( 'Alice' , 'Smith' , 'Ľudské zdroje' ),
( 'Bob' , 'Johnson' , 'marketing' ),
( 'Charlie' , 'Wilson' , 'financie' ),
( 'David' , 'hnedá' , 'predaj' ),
( 'Eva' , 'Davis' , 'inžinierstvo' );
Pokračujme a vytvorte novú tabuľku na uloženie informácií o mzde takto:
VYTVORTE TABUĽKU platov (pay_id INT AUTO_INCREMENT PRIMÁRNY KĽÚČ,
zamestnanec_id INT,
plat DECIMAL( 10 , 2 ),
dátum začiatku DATE,
end_date DATE,
CUDZÍ KĽÚČ (employee_id) REFERENCIE zamestnanci(employee_id)
);
Vložte vzorové údaje do tabuľky takto:
INSERT INTO platy (employee_id, plat, počiatočný_dátum, koncový_dátum) HODNOTY
( 1 , 60000,00 , '2023-01-01' , '2023-12-31' ),
( 2 , 55 000,00 , '2023-01-01' , '2023-12-31' ),
( 3 , 65 000,00 , '2023-01-01' , '2023-12-31' ),
( 4 , 58 000,00 , '2023-01-01' , '2023-12-31' ),
( 5 , 70 000,00 , '2023-01-01' , '2023-12-31' );
To by nám malo poskytnúť dve tabuľky, ktoré nám môžu pomôcť demonštrovať koncept spojenia/zlúčenia tabuliek v SQL.
Zlúčenie tabuliek SQL/spojenie tabuliek
Poďme preskúmať rôzne typy zlúčení tabuliek, ktoré môžeme urobiť. Základné sa budeme zaoberať tým, ako postúpime k pokročilejším.
VNÚTORNÉ SPOJENIE
Prvým a najbežnejším typom spojenia tabuliek v SQL je INNER JOIN. INNER JOIN nám umožňuje kombinovať riadky z dvoch tabuliek na základe špecifickej podmienky. Tento typ potom vráti iba riadky, kde je medzi tabuľkami zhoda.
Vezmime si ako príklad tabuľky „zamestnanci“ a „platy“, ktoré sme vytvorili predtým. Na vykonanie INNER JOIN v SQL používame klauzulu INNER JOIN takto:
VYBRAŤe.employee_id,
e.first_name,
e.priezvisko,
e.oddelenie,
s.plat
OD
zamestnanci e
Mzdy INNER JOIN s ON
e.employee_id = s.employee_id;
V uvedenom príklade dopytu používame INNER JOIN na zlúčenie tabuliek „zamestnanci“ a „platy“ v stĺpci „id_zamestnanca“, ktorý existuje v oboch tabuľkách. Výsledná množina obsahuje iba zodpovedajúce riadky z oboch tabuliek.
Príklad výstupu je nasledujúci:
ĽAVÉ VONKAJŠIE SPOJENIE
Máme tiež LEFT OUTER JOIN, ktorý kombinuje všetky riadky z ľavej tabuľky a zodpovedajúce riadky z pravej tabuľky. Ak sa v pravej tabuľke nenájde žiadna zhoda, spojenie použije hodnotu NULL.
VYBRAŤe.employee_id,
e.first_name,
e.priezvisko,
e.oddelenie,
s.plat
OD
zamestnanci e
LEFT JOIN platy s
ON
e.employee_id = s.employee_id;
V tomto príklade vykonáme LEFT OUTER JOIN na zlúčenie tabuliek „zamestnanci“ a „platy“. Zahrnú sa všetky riadky z tabuľky „zamestnanci“ a pridajú sa zodpovedajúce riadky z tabuľky „platy“. Hodnoty NULL sú však zahrnuté v stĺpci „plat“ pre nezhodné riadky.
SQL UNION
Ďalšou metódou spájania tabuliek v SQL je použitie operátora UNION. Tento operátor nám umožňuje spojiť výsledky dvoch alebo viacerých výberových príkazov do jednej množiny výsledkov.
Stĺpce v každom príkaze SELECT musia mať rovnaký typ údajov, aby bolo možné spojenie použiť.
Príklad je nasledujúci:
SELECT zamestnanec_id , meno , priezvisko , oddelenie , NULL AS platOD zamestnancov e
UNION
SELECT zamestnanec_id , NULL AS meno , NULL AS priezvisko , NULL AS oddelenie , plat
Z platov s ;
V tomto prípade Únia spája tabuľky „zamestnanci“ a „platy“. Potom vytvoríme stĺpce NULL v každom príkaze SELECT, aby sme zabezpečili, že obe tabuľky budú mať podobný počet stĺpcov.
UNIONS sú technicky bežné, ale môžu byť užitočné najmä vtedy, keď potrebujete zlúčiť tabuľky s rôznymi štruktúrami.
Záver
V tomto návode sme preskúmali základy spájania/zlučovania dvoch tabuliek do jednej sady výsledkov. Je dobré mať na pamäti, že v tomto príspevku sa diskutuje o oveľa pokročilejších pripojeniach.