MariaDB JOIN: Combinar registros de diferentes tabelas
Em um sistema de gerenciamento de banco de dados relacional, os registros de tabelas podem ser comparados. Isso permite estabelecer conexões e extrair valores correspondentes de duas tabelas ou mais tabelas. No MariaDB, o JOIN
realiza essa tarefa. Ele é aplicado em combinação com o SELECT
e pode ser usado de diferentes maneiras, como INNER JOIN
, LEFT OUTER JOIN
e RIGHT OUTER JOIN
.
Sintaxe e Funcionamento do MariaDB JOIN
Para que você tenha uma visão geral dos diferentes 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;
sqlCom o SELECT
, você seleciona a coluna (ou colunas) que você deseja visualizar. 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 correspondem (ou seja, estão presentes em ambas as tabelas) são então exibidos juntos em uma tabela de resultados. Registros que não se combinam entre as tabelas não serão considerados.
Exemplo do MariaDB INNER JOIN
Para ilustrar como o INNER JOIN
funciona no MariaDB, escolhemos 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
);
sqlAgora, 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');
sqlEm 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
);
sqlVamos 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');
sqlUtilizamos, 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 correspondente é:
SELECT Clientes.ID_Cliente, Clientes.Sobrenome, Pedidos.ID_Pedido, Pedidos.ID_Produto
FROM Clientes
INNER JOIN Pedidos
ON Clientes.Sobrenome = Pedidos.Sobrenome_Cliente;
sqlAqui, focamos no sobrenome da tabela Clientes e no sobrenome do cliente na tabela Pedidos. Se esses valores coincidirem, eles são incluídos no resultado. Como os clientes Oliveira e Santos aparecem em ambas as tabelas, a saída correspondente 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 semelhante 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 correspondentes da segunda tabela (“Pedidos”). Se não houver correspondência na segunda tabela, o valor correspondente 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;
sqlCom 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 combinados com os valores correspondentes da primeira tabela. Se não houver correspondência, 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;
sqlA saída seria:
Sobrenome | ID_Produto |
---|---|
NULL | 247 |
Oliveira | 332 |
NULL | 247 |
Santos | 191 |
NULL | 499 |
No nosso Digital Guide, você encontrará muitas orientações e explicações úteis sobre o MariaDB. Por exemplo, uma comparação entre MariaDB e MySQL e tudo sobre a instalação do MariaDB. Além disso, você também pode aprender como resetar a senha root no MariaDB.