Sujunkite dvi lenteles SQL

Sujunkite Dvi Lenteles Sql



SQL kalboje lentelių sujungimas reiškia duomenų iš dviejų atskirų lentelių tam tikroje duomenų bazėje sujungimo į vieną vienetą, pagrįstą bendru stulpeliu arba kriterijais, procesą. Taip, jei tai skamba kaip lentelė, tai būtent taip ir yra.

Lentelių sujungimas arba lentelių sujungimas yra žinoma reliacinių duomenų bazių savybė ir ji yra neįtikėtinai galinga. Tai leidžia mums konsoliduoti informaciją iš kelių šaltinių, kad sukurtume nuoseklesnes ir prasmingesnes duomenų įžvalgas. Tai taip pat leidžia reliacinėms duomenų bazėms būti labai keičiamo dydžio (ne lanksčios), nes galime suskirstyti duomenis į mažesnius, valdomus gabalus, kuriuos vėliau galime remtis.

Šioje pamokoje apžvelgsime lentelių sujungimo arba lentelių sujungimo pagrindus. Pažvelkime į realaus pasaulio lentelių pavyzdžius, kad sustiprintume žinias.







Lentelės pavyzdys

Prieš eidami į lentelių sujungimų pasaulį, nustatykime pagrindines lenteles, kurias naudosime demonstravimo tikslais.



Apsvarstykite dvi lenteles, kuriose yra informacija apie darbuotojus ir atlyginimus, kaip parodyta toliau pateiktose užklausų pavyzdžiuose:



CREATE TABLE darbuotojai (

darbuotojo_id INT AUTO_INCREMENT PRIMARY KEY,

vardas VARCHAR( penkiasdešimt ),

pavardė VARCHAR( penkiasdešimt ),

skyrius VARCHAR( penkiasdešimt )

);

Tada pavyzdinius duomenis galime įterpti į darbuotojo lentelę, kaip parodyta šiose užklausose:





INSERT INTO darbuotojai (vardas, pavardė, skyrius) VERTYBĖS

( 'Alisa' , 'Kalvis' , 'Žmogiškieji ištekliai' ),

( 'Bobas' , 'Džonsonas' , 'Rinkodara' ),

( 'Čarlis' , 'Wilson' , 'Finansai' ),

( 'Deividas' , 'ruda' , 'Pardavimai' ),

( 'Eva' , 'Deivis' , 'Inžinerija' );

Tęskime ir sukurkime naują lentelę, kurioje būtų saugoma informacija apie atlyginimą:

KURTI LENTELĘ atlyginimus (

salary_id INT AUTO_INCREMENT PRIMARY KEY,

darbuotojo_id INT,

atlyginimas DECIMAL ( 10 , 2 ),

start_date DATE,

end_date DATE,

UŽSIENIO RAKTAS (darbuotojo_id) NUORODOS darbuotojai (darbuotojo_id)

);

Pridėkite įterpimo duomenų pavyzdį į lentelę taip:



INSERT INTO atlyginimai (darbuotojo_id, atlyginimas, pradžios_data, pabaigos_data) VERTES
( 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“ );

Tai turėtų pateikti dvi lenteles, kurios gali padėti mums parodyti lentelių sujungimo / sujungimo SQL sąvoką.

SQL lentelių sujungimas / lentelių sujungimas

Išnagrinėkime įvairius lentelių sujungimo tipus, kuriuos galime atlikti. Apžvelgsime pagrindinius, kai pereisime prie sudėtingesnių.

VIDINIS PRISIJUNGIMAS

Pirmasis ir labiausiai paplitęs lentelės sujungimo tipas SQL yra VIDINIS JOIN. INNER JOIN leidžia sujungti dviejų lentelių eilutes pagal konkrečią sąlygą. Tada šis tipas grąžina tik tas eilutes, kuriose yra sutapimų tarp lentelių.

Kaip pavyzdžius paimkime anksčiau sukurtas „darbuotojų“ ir „atlyginimų“ lenteles. Norėdami atlikti INNER JOIN SQL, naudojame INNER JOIN sąlygą taip:

PASIRINKTI

e.darbuotojo_id,

e.first_name,

e.pavardė,

e.departamentas,

s.atlyginimas

NUO

darbuotojai e

INNER JOIN atlyginimai s ĮJUNGTA

e.darbuotojo_id = s.darbuotojo_id;

Pateiktoje pavyzdinėje užklausoje naudojame VIDINĮ JOIN, kad sujungtume „darbuotojų“ ir „atlyginimo“ lenteles „employee_id“ stulpelyje, kuris yra abiejose lentelėse. Gautame rinkinyje yra tik atitinkamos abiejų lentelių eilutės.

Išvesties pavyzdys yra toks:

KAIRĖ IŠORINĖ PRIJUNGIMAS

Taip pat turime LEFT OUTTER JOIN, kuris sujungia visas kairiosios lentelės eilutes ir atitinkamas dešiniosios lentelės eilutes. Jei tinkamoje lentelėje nėra atitikties, sujungimui naudojama reikšmė NULL.

PASIRINKTI

e.darbuotojo_id,

e.first_name,

e.pavardė,

e.departamentas,

s.atlyginimas

NUO

darbuotojai e

LEFT JOIN atlyginimai s

ĮJUNGTA

e.darbuotojo_id = s.darbuotojo_id;

Šiame pavyzdyje mes atliekame LEFT OUTTER JOIN, kad sujungtume „darbuotojų“ ir „atlyginimų“ lenteles. Įtraukiamos visos lentelės „darbuotojai“ eilutės ir pridedamos atitinkamos lentelės „atlyginimai“ eilutės. Tačiau NULL reikšmės įtraukiamos į stulpelį „atlyginimas“ neatitinkančiose eilutėse.

SQL SĄJUNGOS

Kitas SQL lentelių sujungimo būdas yra UNION operatorius. Šis operatorius leidžia sujungti dviejų ar daugiau pasirinktų teiginių rezultatus į vieną rezultatų rinkinį.

Kad sąjunga būtų taikoma, kiekvieno SELECT teiginio stulpeliai turi turėti tą patį duomenų tipą.

Pavyzdys yra toks:

PASIRINKITE darbuotojo_id , vardas , pavardė , skyrius , NULL AS atlyginimas

IŠ darbuotojų e

SĄJUNGOS

SELECT darbuotojo_id , NULL AS vardas , NULL AS pavardė , NULL AS skyrius , atlyginimas

NUO atlyginimų s ;

Šiuo atveju SĄJUNGA sujungia „darbuotojų“ ir „atlyginimų“ lenteles. Tada kiekviename SELECT sakinyje sukuriame NULL stulpelius, kad įsitikintume, jog abiejose lentelėse yra panašus stulpelių skaičius.

SĄJUNGOS yra techniškai paplitusios, tačiau jos gali būti naudingos, ypač kai reikia sujungti lenteles su skirtingomis struktūromis.

Išvada

Šioje pamokoje ištyrėme dviejų lentelių sujungimo / sujungimo į vieną rezultatų rinkinį pagrindus. Verta nepamiršti, kad šiame įraše aptariama daug sudėtingesnių prisijungimų.