Tabelite ühendamine või tabeli ühendamine on relatsiooniandmebaaside tuntud funktsioon ja see on uskumatult võimas. See võimaldab meil koondada mitmest allikast pärinevat teavet, et luua ühtsemaid ja sisukamaid andmeid. Samuti võimaldab see relatsiooniandmebaase olla väga skaleeritav (mitte paindlik), kuna saame andmed jagada väiksemateks hallatavateks tükkideks, millele saame hiljem viidata.
Selles õpetuses käsitleme tabelite ühendamise või tabeli ühendamise põhialuseid. Vaatame oma teadmiste tugevdamiseks reaalse maailma tabelinäidiseid.
Näidistabel
Enne kui läheme tabeliühenduste maailma, seadistame põhitabelid, mida kasutame demonstratsiooni eesmärgil.
Mõelge kahele tabelile, mis sisaldavad töötajate ja palgateavet, nagu on näidatud järgmistes näidispäringutes:
CREATE TABLE töötajad (
töötaja_id INT AUTO_INCREMENT PRIMARY KEY,
eesnimi VARCHAR( viiskümmend ),
perekonnanimi VARCHAR( viiskümmend ),
osakond VARCHAR( viiskümmend )
);
Seejärel saame sisestada näidisandmed töötaja tabelisse, nagu on näidatud järgmistes päringutes:
INSERT INTO töötajad (eesnimi, perekonnanimi, osakond) VÄÄRTUSED
( 'Alice' , 'Smith' , 'Inimressursid' ),
( 'Bob' , 'Johnson' , 'Turundus' ),
( 'Charlie' , 'Wilson' , 'Finants' ),
( 'David' , 'pruun' , 'Müük' ),
( 'Eva' , 'Davis' , 'Insener' );
Jätkame ja loome palgainfo salvestamiseks uue tabeli järgmiselt:
LOO TABEL palgad (salary_id INT AUTO_INCREMENT PRIMARY KEY,
töötaja_id INT,
palk DECIMAAL( 10 , 2 ),
start_date DATE,
end_date DATE,
VÄLISVÕTI (töötaja_id) VIITED töötajaid (töötaja_id)
);
Lisage näidisandmed tabelisse järgmiselt:
INSERT INTO palgad (töötaja_id, palk, alguskuupäev, lõpp_kuupäev) VÄÄRTUSED
( 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' );
See peaks andma meile kaks tabelit, mis aitavad meil demonstreerida SQL-is tabelite ühendamise/ühendamise kontseptsiooni.
SQL-tabelite ühendamine/tabelite ühendamine
Uurime erinevaid tabelite liitmise tüüpe, mida saame teha. Põhimõttelisi käsitleme siis, kui liigume edasi arenenumate poole.
SISEMINE LIITUMINE
Esimene ja kõige levinum tabeliühenduse tüüp SQL-is on INNER JOIN. INNER JOIN võimaldab meil kombineerida kahe tabeli ridu konkreetse tingimuse alusel. See tüüp tagastab seejärel ainult need read, kus tabelite vahel on vaste.
Võtame näiteks varem koostatud “töötajate” ja “palkade” tabelid. SQL-is INNER JOIN-i sooritamiseks kasutame klauslit INNER JOIN järgmiselt:
VALIe.töötaja_id,
e.first_name,
e.perenimi_nimi,
e. osakond,
s.palk
FROM
töötajad e
SISEMINE LIITU palgad s PEAL
e.töötaja_id = s.töötaja_id;
Antud näidispäringus kasutame SISEMIST LIITUMIST, et ühendada tabelid 'töötajad' ja 'palgad' veerus 'töötaja_id', mis on olemas mõlemas tabelis. Saadud komplekt sisaldab ainult mõlemast tabelist vastavaid ridu.
Näidisväljund on järgmine:
VASAKU VÄLIMISE LIITUMINE
Meil on ka LEFT OUTTER JOIN, mis ühendab kõik vasakpoolse tabeli read ja parema tabeli vastavad read. Kui õiges tabelis pole vastet, kasutab liitmine väärtust NULL.
VALIe.töötaja_id,
e.first_name,
e.perekonnanimi,
e. osakond,
s.palk
FROM
töötajad e
LEFT JOIN palgad s
PEAL
e.töötaja_id = s.töötaja_id;
Selles näites teostame tabelite 'töötajad' ja 'palgad' liitmiseks VASAKU VÄLIMISE LIITUMISE. Kaasatud on kõik 'töötajate' tabelis olevad read ja lisatud on vastavad read tabelist 'palgad'. NULL-väärtused sisalduvad mittevastavate ridade veerus 'palk'.
SQL UNION
Teine meetod tabelite ühendamiseks SQL-is on operaatori UNION kasutamine. See operaator võimaldab meil ühendada kahe või enama valitud lause tulemused üheks tulemuste komplektiks.
Iga SELECT-lause veergudel peab olema sama andmetüüp, et liit oleks kohaldatav.
Näide on järgmine:
VALI töötaja_id , eesnimi , perekonnanimi , osakond , NULL AS palktöötajatelt e
LIIT
SELECT töötaja_id , NULL AS eesnimi , NULL AS perekonnanimi , NULL AS osakond , palk
palkadest s ;
Sel juhul liidab LIIT 'töötajate' ja 'palkade' tabelid. Seejärel loome igas SELECT-lauses NULL-veerud tagamaks, et mõlemas tabelis on sarnane veergude arv.
LIIDUD on tehniliselt levinud, kuid need võivad olla kasulikud eriti siis, kui on vaja liita erineva struktuuriga tabeleid.
Järeldus
Selles õpetuses uurisime kahe tabeli üheks tulemuste komplektiks ühendamise/ühendamise põhialuseid. Hea on meeles pidada, et selles postituses käsitletakse palju täpsemaid liitumisi.