Una unió a una taula o una combinació de taules és una característica coneguda de les bases de dades relacionals i és increïblement potent. Ens permet consolidar la informació de diverses fonts per crear una visió de dades més coherent i significativa. També permet que les bases de dades relacionals siguin altament escalables (no flexibles), ja que podem dividir les dades en fragments més petits i manejables als quals podem fer referència més endavant.
En aquest tutorial, tractarem els fonaments de les unions de taules o combinacions de taules. Mirem les mostres de taules del món real per consolidar el nostre coneixement.
Taula de mostra
Abans d'entrar al món de les unions de taules, configurem les taules bàsiques que farem servir per a la demostració.
Considereu dues taules que contenen els empleats i la informació salarial tal com es mostra a les consultes d'exemple següents:
Empleats CREATE TAULA (
employee_id INT AUTO_INCREMENT PRIMARY KEY,
primer_nom VARCHAR( 50 ),
cognom VARCHAR( 50 ),
departament VARCHAR( 50 )
);
A continuació, podem inserir les dades de mostra a la taula de l'empleat tal com es mostra a les consultes següents:
INSERT INTO empleats (nom, cognoms, departament) VALORS
( 'Alícia' , 'Smith' , 'Recursos humans' ),
( 'Bob' , 'Johnson' , 'Màrqueting' ),
( 'Charlie' , 'Wilson' , 'Finances' ),
( 'David' , 'marró' , 'vendes' ),
( 'Eva' , 'Davis' , 'Enginyeria' );
Continuem i creem una taula nova per emmagatzemar la informació salarial de la següent manera:
CREAR TAULA salaris (salary_id INT AUTO_INCREMENT PRIMARY KEY,
identificador_empleat INT,
salari DECIMAL( 10 , 2 ),
data_inici DATE,
data_final DATE,
CLAU EXTRANJERA (employee_id) REFERÈNCIES empleats (employee_id)
);
Afegiu les dades de mostra d'inserció a la taula de la manera següent:
INSERT INTO salaris (employee_id, salari, start_date, end_date) VALORS
( 1 , 60.000,00 , '2023-01-01' , '2023-12-31' ),
( 2 , 55.000,00 , '2023-01-01' , '2023-12-31' ),
( 3 , 65.000,00 , '2023-01-01' , '2023-12-31' ),
( 4 , 58.000,00 , '2023-01-01' , '2023-12-31' ),
( 5 , 70.000.00 , '2023-01-01' , '2023-12-31' );
Això ens hauria de proporcionar dues taules que ens poden ajudar a demostrar el concepte d'unió/fusion de taules en SQL.
Combinació de taules SQL/Unions de taula
Explorem els diferents tipus de combinacions de taules que podem fer. Cobrirem els fonamentals a mesura que avancem cap a altres més avançats.
COMBINACIÓ INTERNA
El primer i el més comú tipus d'unió de taula a SQL és un INNER JOIN. Un INNER JOIN ens permet combinar les files de dues taules en funció d'una condició específica. Aquest tipus només retorna les files on hi ha una coincidència entre les taules.
Prenem com a exemples les taules 'empleats' i 'salaris' que hem creat anteriorment. Per realitzar una INNER JOIN en SQL, utilitzem la clàusula INNER JOIN de la següent manera:
SELECCIONAe.employee_id,
e.nom_de_nom,
e.cognoms,
e.departament,
s.salari
DE
empleats e
INNER JOIN salaris s ON
e.employee_id = identificador_de_empleat;
En la consulta d'exemple donada, utilitzem un INNER JOIN per combinar les taules 'empleats' i 'salaris' a la columna 'employee_id' que existeix a les dues taules. El conjunt resultant conté només les files coincidents de les dues taules.
Un exemple de sortida és el següent:
UNIÓ EXTERIOR ESQUERRA
També tenim un LEFT OUTER JOIN que combina totes les files de la taula esquerra i les files coincidents de la taula dreta. Si no hi ha cap coincidència a la taula correcta, la unió utilitza el valor NULL.
SELECCIONAe.employee_id,
e.nom_de_nom,
e.cognoms,
e.departament,
s.salari
DE
empleats e
LEFT JOIN salaris s
ON
e.employee_id = identificador_de_empleat;
En aquest exemple, realitzem una unió exterior a l'esquerra per combinar les taules 'empleats' i 'salaris'. S'inclouen totes les files de la taula 'empleats' i s'afegeixen les files coincidents de la taula 'salaris'. Tanmateix, els valors NULL s'inclouen a la columna 'salari' per a les files que no coincideixen.
UNIÓ SQL
Un altre mètode per unir les taules en SQL és utilitzar l'operador UNION. Aquest operador ens permet combinar els resultats de dues o més declaracions selectes en un únic conjunt de resultats.
Les columnes de cada instrucció SELECT han de tenir el mateix tipus de dades perquè la unió sigui aplicable.
Un exemple és el següent:
SELECT employee_id , first_name , last_name , departament , NULL AS salariDELS empleats e
UNIÓ
SELECT employee_id , NULL AS primer_nom , NULL AS cognoms , NULL AS departament , salari
DE sous s ;
En aquest cas, un Sindicat fusiona les taules “empleats” i “salaris”. A continuació, creem les columnes NULL a cada instrucció SELECT per assegurar-nos que ambdues taules tinguin un nombre similar de columnes.
LES UNIONS són tècnicament habituals, però poden ser útils sobretot quan cal fusionar les taules amb estructures diferents.
Conclusió
En aquest tutorial, hem explorat els fonaments d'unir/fusionar dues taules en un únic conjunt de resultats. És bo tenir en compte que hi ha unions molt més avançades que es comenten en aquesta publicació.