En tabellsammenslåing eller en tabellsammenslåing er en kjent funksjon i relasjonsdatabaser, og den er utrolig kraftig. Det lar oss konsolidere informasjonen fra flere kilder for å skape mer sammenhengende og meningsfull datainnsikt. Det lar også relasjonsdatabasene være svært skalerbare (ikke fleksible) ettersom vi kan bryte ned dataene i mindre, håndterbare biter som vi kan referere til senere.
I denne opplæringen vil vi dekke det grunnleggende om tabellsammenføyninger eller tabellsammenslåing. La oss se på tabelleksemplene fra den virkelige verden for å styrke kunnskapen vår.
Eksempeltabell
Før vi går inn i tabellsammenføyningens verden, la oss sette opp de grunnleggende tabellene som vi skal bruke til demonstrasjonsformål.
Tenk på to tabeller som inneholder de ansatte og lønnsinformasjon som vist i følgende eksempelspørringer:
LAG BORD-ansatte (
ansatt_id INT AUTO_INCREMENT PRIMARY KEY,
fornavn VARCHAR( femti ),
etternavn VARCHAR( femti ),
avdeling VARCHAR( femti )
);
Vi kan deretter sette inn eksempeldataene i den ansattes tabell som vist i følgende spørsmål:
INSERT INTO ansatte (fornavn, etternavn, avdeling) VERDIER
( 'Alice' , 'Smith' , 'Menneskelige ressurser' ),
( 'Bob' , 'Johnson' , 'Markedsføring' ),
( 'Charlie' , 'Wilson' , 'Finansiere' ),
( 'David' , 'Brun' , 'Salg' ),
( 'Eva' , 'Davis' , 'Enginering' );
La oss fortsette og lage en ny tabell for å lagre lønnsinformasjonen som følger:
LAG TABELL lønn (salary_id INT AUTO_INCREMENT PRIMARY KEY,
ansatt_id INT,
lønn DESIMAL( 10 , 2 ),
startdato DATE,
sluttdato DATE,
FOREIGN KEY (employee_id) REFERANSER ansatte(employee_id)
);
Legg inn eksempeldataene i tabellen som følger:
INSERT INTO lønn (ansatt_id, lønn, startdato, sluttdato) VERDIER
( 1 , 60 000,00 , '2023-01-01' , '2023-12-31' ),
( 2 , 55 000,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 , 70 000,00 , '2023-01-01' , '2023-12-31' );
Dette skulle gi oss to tabeller som kan hjelpe oss med å demonstrere konseptet med tabellsammenføyning/sammenslåing i SQL.
SQL-tabellsammenslåing/tabellsammenføyninger
La oss utforske de ulike typene tabellsammenslåinger vi kan gjøre. Vi vil dekke de grunnleggende etter hvert som vi går videre til mer avanserte.
INDRE BLI MED
Den første og vanligste typen tabellsammenføyning i SQL er en INNER JOIN. En INNER JOIN lar oss kombinere radene fra to tabeller basert på en spesifikk tilstand. Denne typen returnerer da bare radene der det er samsvar mellom tabellene.
La oss ta 'ansatte' og 'lønn'-tabellene som vi laget tidligere som eksempler. For å utføre en INNER JOIN i SQL bruker vi INNER JOIN-klausulen som følger:
PLUKKE UTe.employee_id,
e.first_name,
e.etternavn,
e.avdeling,
s.lønn
FRA
ansatte e
INNER JOIN lønn s PÅ
e.employee_id = s.employee_id;
I den gitte eksempelspørringen bruker vi en INNER JOIN for å slå sammen tabellene 'ansatte' og 'lønninger' i kolonnen 'employee_id' som finnes i begge tabellene. Det resulterende settet inneholder bare de samsvarende radene fra begge tabellene.
Et eksempelutgang er som følger:
VENSTRE YTRE JOIN
Vi har også en LEFT OUTER JOIN som kombinerer alle rader fra venstre tabell og matchende rader fra høyre tabell. Hvis det ikke er samsvar i den høyre tabellen, bruker sammenføyningen NULL-verdien.
PLUKKE UTe.employee_id,
e.first_name,
e.etternavn,
e.avdeling,
s.lønn
FRA
ansatte e
LEFT JOIN lønn s
PÅ
e.employee_id = s.employee_id;
I dette eksemplet utfører vi en LEFT OUTER JOIN for å slå sammen tabellene 'ansatte' og 'lønninger'. Alle radene fra tabellen 'ansatte' er inkludert, og de samsvarende radene fra tabellen 'lønninger' legges til. Imidlertid er NULL-verdier inkludert i kolonnen 'lønn' for rader som ikke samsvarer.
SQL UNION
En annen metode for å slå sammen tabellene i SQL er å bruke UNION-operatoren. Denne operatoren lar oss kombinere resultatene av to eller flere utvalgte utsagn til et enkelt resultatsett.
Kolonnene i hver SELECT-setning må ha samme datatype for at unionen skal være aktuelt.
Et eksempel er som følger:
VELG ansatt_id , fornavn , etternavn , avdeling , NULL AS lønnFRA ansatte e
UNION
SELECT ansatt_id , NULL AS fornavn , NULL AS etternavn , NULL AS avdeling , lønn
FRA lønn s ;
I dette tilfellet slår en UNION sammen tabellene 'ansatte' og 'lønninger'. Vi oppretter deretter NULL-kolonnene i hver SELECT-setning for å sikre at begge tabellene har et tilsvarende antall kolonner.
UNIONS er teknisk vanlige, men de kan være nyttige spesielt når du trenger å slå sammen tabellene med forskjellige strukturer.
Konklusjon
I denne opplæringen utforsket vi det grunnleggende om å slå sammen to tabeller til et enkelt resultatsett. Det er greit å huske på at det er mye mer avanserte sammenføyninger som er omtalt i dette innlegget.