Em um sistema de ge­ren­ci­a­mento de banco de dados re­la­ci­o­nal, os registros de tabelas podem ser com­pa­ra­dos. Isso permite es­ta­be­le­cer conexões e extrair valores cor­res­pon­den­tes de duas tabelas ou mais tabelas. No MariaDB, o JOIN realiza essa tarefa. Ele é aplicado em com­bi­na­ção com o SELECT e pode ser usado de di­fe­ren­tes maneiras, como INNER JOIN, LEFT OUTER JOIN e RIGHT OUTER JOIN.

Sintaxe e Fun­ci­o­na­mento do MariaDB JOIN

Para que você tenha uma visão geral dos di­fe­ren­tes MariaDB JOIN, mostramos primeiro a sintaxe básica do comando. O INNER JOIN apresenta a seguinte sintaxe:

SELECT coluna(s)
FROM tabela_1
INNER JOIN tabela_2
ON tabela_1.coluna = tabela_2.coluna;
sql

Com o SELECT, você seleciona a coluna (ou colunas) que você deseja vi­su­a­li­zar. Em vez de “tabela_1”, você insere a primeira tabela e, em vez de “tabela_2”, a segunda tabela, que você deseja combinar com a primeira. O INNER JOIN compara todas as linhas da primeira tabela com todas as linhas da segunda tabela. Os registros que cor­res­pon­dem (ou seja, estão presentes em ambas as tabelas) são então exibidos juntos em uma tabela de re­sul­ta­dos. Registros que não se combinam entre as tabelas não serão con­si­de­ra­dos.

Exemplo do MariaDB INNER JOIN

Para ilustrar como o INNER JOIN funciona no MariaDB, es­co­lhe­mos um exemplo simples. Vamos supor que, em um banco de dados, existem duas tabelas. A primeira tabela se chama “Clientes” e a segunda “Pedidos”. Criamos a tabela “Clientes” com MariaDB CREATE TABLE. Ela contém as colunas “ID_Cliente”, “Sobrenome”, “Nome”, “Cidade” e “Data_Cadastro”. O código é o seguinte:

CREATE TABLE Clientes (
ID_Cliente INT PRIMARY KEY,
Sobrenome VARCHAR(50),
Nome VARCHAR(50),
Cidade VARCHAR(50),
Data_Cadastro DATE
);
sql

Agora, vamos inserir alguns registros na tabela usando o comando INSERT INTO:

INSERT INTO Clientes VALUES
(1, 'Silva', 'João', 'São Paulo', '2022-07-19'),
(2, 'Santos', 'Maria', 'Rio de Janeiro', '2023-03-03'),
(3, 'Oliveira', 'Pedro', 'Rio de Janeiro', '2023-07-09'),
(4, 'Souza', 'Ana', 'Curitiba', '2023-12-10'),
(5, 'Costa', 'Luiz', 'São Paulo', '2024-01-17');
sql

Em seguida, criamos a tabela “Pedidos”. Ela contém as colunas “ID_Pedido”, “ID_Produto”, “Nome_Cliente” e “Data_Pedido”. O código é o seguinte:

CREATE TABLE Pedidos (
ID_Pedido INT AUTO_INCREMENT PRIMARY KEY,
ID_Produto INT,
Sobrenome_Cliente VARCHAR(50),
Data_Pedido DATE
);
sql

Vamos preencher essa tabela com alguns valores de exemplo:

INSERT INTO Pedidos VALUES
(101, 247, 'Moura', '2024-02-20'),
(102, 332, 'Oliveira', '2024-03-03'),
(103, 247, 'Gomes', '2024-03-09'),
(104, 191, 'Santos', '2024-03-17'),
(105, 499, 'Ferreira', '2024-03-17');
sql

Uti­li­za­mos, no MariaDB, o INNER JOIN para filtrar os clientes que aparecem na tabela “Clientes” e que fizeram um pedido listado na tabela “Pedidos”. O código cor­res­pon­dente é:

SELECT Clientes.ID_Cliente, Clientes.Sobrenome, Pedidos.ID_Pedido, Pedidos.ID_Produto
FROM Clientes
INNER JOIN Pedidos
ON Clientes.Sobrenome = Pedidos.Sobrenome_Cliente;
sql

Aqui, focamos no sobrenome da tabela Clientes e no sobrenome do cliente na tabela Pedidos. Se esses valores coin­ci­di­rem, eles são incluídos no resultado. Como os clientes Oliveira e Santos aparecem em ambas as tabelas, a saída cor­res­pon­dente seria:

ID_Cliente Sobrenome ID_Pedido ID_Produto
3 Oliveira 102 332
2 Santos 104 191

LEFT OUTER JOIN

Outro tipo de comando MariaDB JOIN é o LEFT OUTER JOIN. Esse funciona de maneira se­me­lhante e utiliza uma sintaxe quase idêntica. No entanto, ao contrário do INNER JOIN, todos os registros da primeira tabela (no exemplo, “Clientes”) são exibidos e apenas os registros cor­res­pon­den­tes da segunda tabela (“Pedidos”). Se não houver cor­res­pon­dên­cia na segunda tabela, o valor cor­res­pon­dente será indicado como NULL. Para o nosso exemplo acima, o comando ficaria assim:

SELECT Clientes.Sobrenome, Pedidos.ID_Produto
FROM Clientes
LEFT OUTER JOIN Pedidos
ON Clientes.Sobrenome = Pedidos.Sobrenome_Cliente;
sql

Com isso, obtemos o seguinte resultado:

Sobrenome ID_Produto
Silva NULL
Santos 191
Oliveira 332
Souza NULL
Costa NULL

RIGHT OUTER JOIN

O RIGHT OUTER JOIN no MariaDB funciona de maneira oposta. Neste caso, todos os registros da segunda tabela são mantidos e com­bi­na­dos com os valores cor­res­pon­den­tes da primeira tabela. Se não houver cor­res­pon­dên­cia, o valor será NULL. Aqui está o código:

SELECT Clientes.Sobrenome, Pedidos.ID_Produto
FROM Clientes
RIGHT OUTER JOIN Pedidos
ON Clientes.Sobrenome = Pedidos.Sobrenome_Cliente;
sql

A saída seria:

Sobrenome ID_Produto
NULL 247
Oliveira 332
NULL 247
Santos 191
NULL 499
Dica

No nosso Digital Guide, você en­con­trará muitas ori­en­ta­ções e ex­pli­ca­ções úteis sobre o MariaDB. Por exemplo, uma com­pa­ra­ção entre MariaDB e MySQL e tudo sobre a ins­ta­la­ção do MariaDB. Além disso, você também pode aprender como resetar a senha root no MariaDB.

Ir para o menu principal