Num sistema de gestão de bases de dados re­la­ci­o­nais, pode comparar conjuntos de dados de di­fe­ren­tes tabelas, o que lhe permite ligar e encontrar os valores que coincidem em ambas as tabelas com a cláusula JOIN do MariaDB. Esta cláusula é utilizada em com­bi­na­ção com SELECT e pode ser dividida em di­fe­ren­tes ca­te­go­rias, como INNER JOIN, LEFT OUTER JOIN e RIGHT OUTER JOIN, que lhe mostramos em detalhe.

Sintaxe e fun­ci­o­na­mento

Para lhe dar uma visão geral das di­fe­ren­tes cláusulas JOIN no MariaDB, mostramos primeiro a sintaxe básica. INNER JOIN tem a seguinte aparência:

SELECT columna(s)
FROM tabla_1
INNER JOIN tabla_2
ON tabla_1.columna = tabla_2.columna;
sql

Use SELECT para se­le­ci­o­nar a coluna (ou colunas) com a(s) qual(is) deseja trabalhar. Substitua o marcador de posição “tabela_1” pela sua primeira tabela e “tabela_2” pela segunda tabela que deseja combinar. INNER JOIN permite comparar todas as linhas da primeira tabela com todas as linhas da segunda tabela. Os re­sul­ta­dos que coincidem (ou seja, que estão presentes em ambas as tabelas) são apre­sen­ta­dos juntos numa tabela de re­sul­ta­dos. As entradas que não coincidem não são con­si­de­ra­das.

Exemplo de INNER JOIN no MariaDB

Aqui está um exemplo simples para que veja como funciona INNER JOIN no MariaDB. Pre­ci­sa­mos de uma base de dados com duas tabelas; a primeira tabela cha­ma­re­mos de «Lista de clientes» e a segunda «Pedidos». Primeiro, criamos a tabela «Lista_de_clientes» com MariaDB CREATE TABLE. Ela contém as colunas «Numero_de_cliente», «Apellido», «Nombre», «Ciudad» e «Fecha_de_creacion». O código é o seguinte:

CREATE TABLE Lista_de_clientes (
	Numero_de_cliente INT PRIMARY KEY,
	Apellido VARCHAR(50),
	Nombre VARCHAR(50),
	Ciudad VARCHAR(50),
	Fecha_de_creacion DATE
);
sql

Pre­en­che­mos a tabela com alguns valores usando 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');
sql

Em seguida, criamos a tabela “Pedidos”, que contém as colunas “Número_do_pedido”, “Número_do_artigo”, “Nome_do_cliente” e “Data_do_pedido”. O código é o seguinte:

CREATE TABLE Pedidos (
	Numero_de_pedido INT AUTO_INCREMENT PRIMARY KEY,
	Numero_de_articulo INT,
	Nombre_de_cliente VARCHAR(50),
	Fecha_de_pedido DATE
);
sql

Também com­ple­ta­mos essa tabela com valores de exemplo:

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');
sql

Agora usamos o MariaDB INNER JOIN para filtrar os clientes que aparecem na tabela “Lista_de_clientes” e que fizeram um pedido, ou seja, que aparecem na tabela “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;
sql

O sistema verifica a coluna «Apelido» da tabela «Lista_de_clientes» e a coluna «Nome_do_cliente» da tabela «Pedidos». Se ambos os valores coin­ci­di­rem, são incluídos na resposta. Como os clientes García, Martínez e López aparecem em ambas as tabelas, é emitido o seguinte resultado:

Número_de_cliente Apelido Número_do_pedido Número_do_artigo
1 García 101 247
2 Martínez 104 191
3 López 102 332

LEFT OUTER JOIN

O LEFT OUTER JOIN no MariaDB funciona de forma se­me­lhante e utiliza uma sintaxe quase idêntica. No entanto, ao contrário do INNER JOIN, no caso do LEFT OUTER JOIN, são mostrados todos os conjuntos de dados da primeira tabela ou tabela esquerda (no nosso exemplo, a tabela «Lista_de_clientes») e apenas os conjuntos de dados que coincidem da segunda tabela ou tabela direita (no nosso exemplo, a tabela «Pedidos»). Se o valor da segunda tabela não cor­res­pon­der, aparece NULL na célula cor­res­pon­dente. Seguindo o exemplo anterior, o comando seria o seguinte:

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;
sql

O resultado obtido é o seguinte:

Apelido Número_do_artigo
García 247
Martínez 191
López 332
Sánchez NULL
Fernández NULL

RIGHT OUTER JOIN

No MariaDB, RIGHT OUTER JOIN funciona exa­ta­mente ao contrário. Os dados da segunda tabela ou tabela direita são com­bi­na­dos com os valores cor­res­pon­den­tes da primeira tabela ou tabela esquerda. Se não cor­res­pon­de­rem, tal como no LEFT OUTER JOIN, o valor NULL aparece na célula cor­res­pon­dente. Aqui está o 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;
sql

O resultado obtido é o seguinte:

Nome_do_cliente Número_do_artigo
García 247
López 332
NULL 247
Martínez 191
NULL 499
Ir para o menu principal