JOIN en MariaDB: combinar conjuntos de datos de múltiples tablas
En un sistema de gestión de bases de datos relacionales, puedes comparar conjuntos de datos de distintas tablas, lo que te permite enlazar y encontrar los valores que coinciden en ambas tablas con la cláusula JOIN
de MariaDB. Esta cláusula se utiliza en combinación con SELECT
y se puede dividir en diferentes categorías, como INNER JOIN
, LEFT OUTER JOIN
y RIGHT OUTER JOIN
, que te mostramos en detalle.
Sintaxis y funcionamiento
Para darte una visión general de las diferentes cláusulas JOIN
en MariaDB, te mostramos primero la sintaxis básica. INNER JOIN
tiene el siguiente aspecto:
SELECT columna(s)
FROM tabla_1
INNER JOIN tabla_2
ON tabla_1.columna = tabla_2.columna;
sqlUtiliza SELECT
para seleccionar la columna (o columnas) con la(s) que quieres trabajar. Reemplaza el marcador de posición “tabla_1” con tu primera tabla y “tabla_2” con la segunda tabla que quieres combinar. INNER JOIN
te permite comparar todas las filas de la primera tabla con todas las filas de la segunda tabla. Los resultados que coinciden (es decir, que están presentes en ambas tablas) se muestran juntos en una tabla de resultados. Las entradas que no coinciden no se tienen en cuenta.
Ejemplo de INNER JOIN
en MariaDB
Aquí tienes un ejemplo sencillo para que veas cómo funciona INNER JOIN
en MariaDB. Necesitamos un base de datos con dos tablas; la primera tabla la llamaremos “Lista de clientes” y la segunda “Pedidos”. Primero, creamos la tabla “Lista_de_clientes” con MariaDB CREATE TABLE. Contiene las columnas “Numero_de_cliente”, “Apellido”, “Nombre”, “Ciudad” y “Fecha_de_creacion”. El código es el siguiente:
CREATE TABLE Lista_de_clientes (
Numero_de_cliente INT PRIMARY KEY,
Apellido VARCHAR(50),
Nombre VARCHAR(50),
Ciudad VARCHAR(50),
Fecha_de_creacion DATE
);
sqlRellenamos la tabla con algunos valores utilizando INSERT INTO
:
INSERT INTO Lista_de_clientes VALUES
(1, 'García', 'Martina', 'Madrid', '2022-07-19'),
(2, 'Martínez', 'Bernd', 'Barcelona', '2023-03-03'),
(3, 'López', 'Pedro', 'Sevilla', '2023-07-09'),
(4, 'Sánchez', 'Sara', 'Valencia', '2023-12-10'),
(5, 'Fernández', 'Luis', 'Zaragoza', '2024-01-17');
sqlLuego, creamos la tabla “Pedidos”, que contiene las columnas “Numero_de_pedido”, “Numero_de_articulo”, “Nombre_de_cliente” y “Fecha_de_pedido”. El código es el siguiente:
CREATE TABLE Pedidos (
Numero_de_pedido INT AUTO_INCREMENT PRIMARY KEY,
Numero_de_articulo INT,
Nombre_de_cliente VARCHAR(50),
Fecha_de_pedido DATE
);
sqlTambién completamos dicha tabla con valores de ejemplo:
INSERT INTO Pedidos VALUES
(101, 247, 'García', '2024-02-20'),
(102, 332, 'López', '2024-03-03'),
(103, 247, 'Rodríguez', '2024-03-09'),
(104, 191, 'Martínez', '2024-03-17'),
(105, 499, 'Hernández', '2024-03-17');
sqlAhora utilizamos INNER JOIN
de MariaDB para filtrar por aquellos clientes que aparecen en la tabla “Lista_de_clientes” y han realizado un pedido, es decir, aparecen en la tabla “Pedidos”:
SELECT Lista_de_clientes.Numero_de_cliente, Lista_de_clientes.Apellido, Pedidos.Numero_de_pedido, Pedidos.Numero_de_articulo
FROM Lista_de_clientes
INNER JOIN Pedidos
ON Lista_de_clientes.Apellido = Pedidos.Nombre_de_cliente;
sqlEl sistema revisa la columna “Apellido” de la tabla “Lista_de_clientes” y la columna “Nombre_de_cliente” de la tabla “Pedidos”. Si ambos valores coinciden, se incluyen en la respuesta. Como los clientes García, Martínez y López aparecen en ambas tablas, se emite el siguiente resultado:
Numero_de_cliente | Apellido | Numero_de_pedido | Numero_de_articulo |
---|---|---|---|
1 | García | 101 | 247 |
2 | Martínez | 104 | 191 |
3 | López | 102 | 332 |
LEFT OUTER JOIN
El LEFT OUTER JOIN
en MariaDB funciona de forma similar y utiliza una sintaxis casi idéntica. Sin embargo, a diferencia de INNER JOIN
, en el caso de LEFT OUTER JOIN
se muestran todos los conjuntos de datos de la primera tabla o tabla izquierda (en nuestro ejemplo, la tabla “Lista_de_clientes”) y solo los conjuntos de datos que coincidan de la segunda tabla o tabla derecha (en nuestro ejemplo, la tabla “Pedidos”). Si el valor de la segunda tabla no coincide, aparece NULL en la celda correspondiente. Siguiendo el ejemplo anterior, el comando sería el siguiente:
SELECT Lista_de_clientes.Apellido, Pedidos.Numero_de_articulo
FROM Lista_de_clientes
LEFT OUTER JOIN Pedidos
ON Lista_de_clientes.Apellido = Pedidos.Nombre_de_cliente;
sqlSe obtiene el siguiente resultado:
Apellido | Numero_de_articulo |
---|---|
García | 247 |
Martínez | 191 |
López | 332 |
Sánchez | NULL |
Fernández | NULL |
RIGHT OUTER JOIN
En MariaDB, RIGHT OUTER JOIN
funciona exactamente al revés. Los datos de la segunda tabla o tabla derecha se combinan con los valores que coincidan de la primera tabla o tabla izquierda. Si no coinciden, al igual que con LEFT OUTER JOIN
, aparece el valor NULL en la celda correspondiente. Aquí tienes el código:
SELECT Lista_de_clientes.Apellido, Pedidos.Numero_de_articulo
FROM Lista_de_clientes
RIGHT OUTER JOIN Pedidos
ON Lista_de_clientes.Apellido = Pedidos.Nombre_de_cliente;
sqlSe obtiene el siguiente resultado:
Nombre_de_cliente | Numero_de_articulo |
---|---|
García | 247 |
López | 332 |
NULL | 247 |
Martínez | 191 |
NULL | 499 |
En nuestra Digital Guide encontrarás muchas instrucciones y explicaciones útiles sobre MariaDB. Por ejemplo, encontrarás una comparación entre MariaDB y MySQL y todo lo que necesitas saber sobre cómo instalar MariaDB.