En tabelsammenføjning eller en tabelfletning er en berømt funktion i relationelle databaser, og den er utrolig kraftfuld. Det giver os mulighed for at konsolidere informationen fra flere kilder for at skabe mere sammenhængende og meningsfuld dataindsigt. Det gør det også muligt for relationsdatabaserne at være meget skalerbare (ikke fleksible), da vi kan nedbryde dataene i mindre, håndterbare bidder, som vi kan referere til senere.
I denne øvelse vil vi dække det grundlæggende i tabelsammenføjninger eller tabelfletning. Lad os se på de virkelige tabelprøver for at styrke vores viden.
Eksempel tabel
Inden vi går ind i bordsammenføjningens verden, lad os opsætte de grundlæggende tabeller, som vi vil bruge til demonstrationsformål.
Overvej to tabeller, der indeholder oplysninger om medarbejdere og løn som vist i følgende eksempelforespørgsler:
CREATE TABLE medarbejdere (
medarbejder_id INT AUTO_INCREMENT PRIMÆR NØGLE,
fornavn VARCHAR( halvtreds ),
efternavn VARCHAR( halvtreds ),
afdeling VARCHAR( halvtreds )
);
Vi kan derefter indsætte eksempeldataene i medarbejderens tabel som vist i følgende forespørgsler:
INDSÆT I medarbejdere (fornavn, efternavn, afdeling) VÆRDIER
( 'Alice' , 'Smith' , 'Menneskelige ressourcer' ),
( 'Bob' , 'Johnson' , 'Markedsføring' ),
( 'Charlie' , 'Wilson' , 'Finansiere' ),
( 'David' , 'Brun' , 'Salg' ),
( 'Eva' , 'Davis' , 'Ingeniørarbejde' );
Lad os fortsætte og oprette en ny tabel til at gemme lønoplysningerne som følger:
OPRET TABEL lønninger (løn_id INT AUTO_INCREMENT PRIMÆR NØGLE,
medarbejder_id INT,
løn DECIMAL( 10 , 2 ),
startdato DATE,
slutdato DATE,
UDENLANDSKE NØGLE (employee_id) REFERENCES medarbejdere(employee_id)
);
Tilføj indsæt eksempeldata i tabellen som følger:
INDSÆT I lønninger (medarbejder-id, løn, startdato, slutdato) VÆRDIER
( 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' );
Dette skulle give os to tabeller, der kan hjælpe os med at demonstrere konceptet med tabelsammenføjning/fletning i SQL.
SQL Table Merge/Table Joins
Lad os udforske de forskellige typer tabelfusioner, som vi kan lave. Vi vil dække de grundlæggende, efterhånden som vi udvikler os til mere avancerede.
INDRE JOIN
Den første og mest almindelige type table join i SQL er en INNER JOIN. En INNER JOIN giver os mulighed for at kombinere rækkerne fra to tabeller baseret på en specifik tilstand. Denne type returnerer så kun de rækker, hvor der er et match mellem tabellerne.
Lad os tage 'medarbejdere' og 'løn'-tabellerne, som vi lavede tidligere som eksempler. For at udføre en INNER JOIN i SQL bruger vi INNER JOIN-sætningen som følger:
VÆLGe.employee_id,
e.first_name,
e.efternavn,
e. afdeling,
s.løn
FRA
medarbejdere e
INNER JOIN lønninger PÅ
e.employee_id = s.employee_id;
I den givne eksempelforespørgsel bruger vi en INNER JOIN til at flette 'medarbejdere' og 'løn'-tabellerne i kolonnen 'employee_id', som findes i begge tabeller. Det resulterende sæt indeholder kun de matchende rækker fra begge tabeller.
Et eksempel på output er som følger:
VENSTRE YDRE JOIN
Vi har også en LEFT OUTER JOIN, som kombinerer alle rækker fra venstre tabel og de matchende rækker fra højre tabel. Hvis der ikke er noget match i den højre tabel, bruger joinforbindelsen NULL-værdien.
VÆLGe.employee_id,
e.first_name,
e.efternavn,
e. afdeling,
s.løn
FRA
medarbejdere e
LEFT JOIN løn s
PÅ
e.employee_id = s.employee_id;
I dette eksempel udfører vi en LEFT OUTER JOIN for at flette 'medarbejdere' og 'løn'-tabellerne. Alle rækkerne fra tabellen 'medarbejdere' er inkluderet, og de matchende rækker fra tabellen 'lønninger' tilføjes. NULL-værdier er dog inkluderet i kolonnen 'løn' for ikke-matchende rækker.
SQL UNION
En anden metode til at forbinde tabellerne i SQL er at bruge UNION-operatoren. Denne operator giver os mulighed for at kombinere resultaterne af to eller flere udvalgte udsagn til et enkelt resultatsæt.
Kolonnerne i hver SELECT-sætning skal have samme datatype, for at foreningen kan anvendes.
Et eksempel er som følger:
VÆLG medarbejder_id , fornavn , efternavn , afdeling , NULL AS lønFRA medarbejdere e
UNION
SELECT medarbejder_id , NULL AS fornavn , NULL AS efternavn , NULL AS afdeling , løn
FRA løn s ;
I dette tilfælde kombinerer en UNION tabellerne 'medarbejdere' og 'løn'. Vi opretter derefter NULL-kolonnerne i hver SELECT-sætning for at sikre, at begge tabeller har et tilsvarende antal kolonner.
UNIONS er teknisk almindelige, men de kan være nyttige, især når du skal flette tabellerne med forskellige strukturer.
Konklusion
I dette selvstudium undersøgte vi det grundlæggende i at sammenføje/fusionere to tabeller til et enkelt resultatsæt. Det er godt at huske på, at der er mange mere avancerede joinforbindelser, der diskuteres i dette indlæg.