Tabulu pievienošana vai tabulu sapludināšana ir slavena relāciju datu bāzu funkcija, un tā ir neticami spēcīga. Tas ļauj mums konsolidēt informāciju no vairākiem avotiem, lai izveidotu saskaņotākus un nozīmīgākus datu ieskatus. Tas arī ļauj relāciju datu bāzēm būt ļoti mērogojamām (nav elastīgām), jo mēs varam sadalīt datus mazākos, pārvaldāmos gabalos, uz kuriem varam atsaukties vēlāk.
Šajā apmācībā mēs apskatīsim tabulu savienošanas vai tabulu sapludināšanas pamatus. Apskatīsim reālās pasaules tabulu paraugus, lai nostiprinātu savas zināšanas.
Tabulas paraugs
Pirms iedziļināmies tabulu savienojumu pasaulē, iestatīsim pamata tabulas, kuras izmantosim demonstrācijas nolūkos.
Apsveriet divas tabulas, kurās ir informācija par darbiniekiem un algām, kā parādīts šādos vaicājumu piemēros:
CREATE TABLE darbinieki (
darbinieka_id INT AUTO_INCREMENT PRIMARY KEY,
vārds VARCHAR( piecdesmit ),
uzvārds VARCHAR( piecdesmit ),
nodaļa VARCHAR( piecdesmit )
);
Pēc tam mēs varam ievietot datu paraugus darbinieka tabulā, kā parādīts šādos vaicājumos:
INSERT INTO darbinieku (vārds, uzvārds, nodaļa) VĒRTĪBAS
( 'Alise' , 'Smits' , 'Cilvēku resursi' ),
( 'Bobs' , 'Džonsons' , 'Mārketings' ),
( 'Čārlijs' , 'Vilsons' , 'Finanses' ),
( 'Dāvids' , 'brūns' , 'Pārdošana' ),
( 'Eva' , 'Dāvis' , 'Inženierzinātnes' );
Turpināsim un izveidosim jaunu tabulu algu informācijas glabāšanai šādi:
IZVEIDOT TABULU algas (salary_id INT AUTO_INCREMENT PRIMARY KEY,
darbinieka_id INT,
alga DECIMĀLĀ( 10 , 2 ),
sākuma_datums DATE,
beigu_datums DATE,
ĀRĒJĀ ATSLĒGA (darbinieka_id) ATSAUKSMES darbinieki (darbinieka_id)
);
Pievienojiet ievietošanas datu paraugu tabulā šādi:
INSERT INTO algas (darbinieka_id, alga, sākuma_datums, beigu_datums) VĒRTĪBAS
( 1 , 60000,00 , “2023-01-01” , “2023-12-31” ),
( 2 , 55000,00 , “2023-01-01” , “2023-12-31” ),
( 3 , 65000,00 , “2023-01-01” , “2023-12-31” ),
( 4 , 58000,00 , “2023-01-01” , “2023-12-31” ),
( 5 , 70000,00 , “2023-01-01” , “2023-12-31” );
Tam vajadzētu nodrošināt mūs ar divām tabulām, kas var palīdzēt mums demonstrēt tabulu savienošanas/apvienošanas jēdzienu SQL.
SQL tabulu sapludināšana/tabulu pievienošana
Izpētīsim dažādus tabulu sapludināšanas veidus, ko varam veikt. Mēs apskatīsim pamatjautājumus, pārejot uz progresīvākiem.
IEKŠĒJĀ PIEVIENOŠANĀS
Pirmais un visizplatītākais tabulu savienojuma veids SQL ir INNER JOIN. INNER JOIN ļauj apvienot rindas no divām tabulām, pamatojoties uz konkrētu nosacījumu. Šis tips pēc tam atgriež tikai tās rindas, kurās ir atbilstība starp tabulām.
Kā piemērus ņemsim iepriekš izveidotās “darbinieku” un “algu” tabulas. Lai veiktu INNER JOIN SQL, mēs izmantojam INNER JOIN klauzulu šādi:
ATLASĪTe.employee_id,
e.first_name,
e.last_name,
e.nodaļa,
s.alga
NO
darbinieki e
IEKŠĒJĀ JOIN algas s IESL
e.darba ņēmēja_id = s.darbinieka_id;
Dotajā vaicājuma piemērā mēs izmantojam INNER JOIN, lai sapludinātu tabulas “darbinieki” un “algas” kolonnā “employee_id”, kas pastāv abās tabulās. Iegūtajā komplektā ir tikai atbilstošās rindas no abām tabulām.
Izvades piemērs ir šāds:
PA kreisi ĀRĒJĀ PIEVIENOTIES
Mums ir arī LEFT OUTTER JOIN, kas apvieno visas rindas no kreisās tabulas un atbilstošās rindas no labās tabulas. Ja labajā tabulā nav atbilstības, savienojumam tiek izmantota NULL vērtība.
ATLASĪTe.employee_id,
e.first_name,
e.last_name,
e.nodaļa,
s.alga
NO
darbinieki e
LEFT JOIN algas s
IESL
e.darba ņēmēja_id = s.darbinieka_id;
Šajā piemērā mēs veicam LEFT ĀRĒJO PIEVIENOŠANU, lai apvienotu tabulas “darbinieki” un “algas”. Ir iekļautas visas rindas no tabulas “darbinieki” un tiek pievienotas atbilstošās rindas no tabulas “algas”. Tomēr NULL vērtības ir iekļautas slejā “alga” neatbilstošām rindām.
SQL SAVIENĪBA
Vēl viena tabulu savienošanas metode SQL ir operatora UNION izmantošana. Šis operators ļauj apvienot divu vai vairāku atlasīto paziņojumu rezultātus vienā rezultātu kopā.
Lai savienība būtu piemērojama, katra SELECT priekšraksta kolonnām ir jābūt vienādam datu tipam.
Piemērs ir šāds:
SELECT darbinieka_id , vārds_vārds , uzvārds , nodaļa , NULL AS algaNO darbiniekiem e
SAVIENĪBA
SELECT darbinieka_id , NULL AS vārds , NULL AS uzvārds , NULL AS nodaļa , alga
NO algām s ;
Šajā gadījumā SAVIENĪBA apvieno tabulas “darbinieki” un “algas”. Pēc tam katrā SELECT priekšrakstā izveidojam NULL kolonnas, lai nodrošinātu, ka abās tabulās ir līdzīgs kolonnu skaits.
SAVIENĪBAS ir tehniski izplatītas, taču tās var būt noderīgas, jo īpaši, ja nepieciešams apvienot tabulas ar dažādām struktūrām.
Secinājums
Šajā apmācībā mēs izpētījām pamatprincipus divu tabulu apvienošanai/apvienošanai vienā rezultātu kopā. Ir labi paturēt prātā, ka šajā ziņojumā ir apspriesti daudz uzlaboti pievienošanās veidi.