# 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:

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

Com 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`](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-create-table/). Ela contém as colunas “ID\_Cliente”, “Sobrenome”, “Nome”, “Cidade” e “Data\_Cadastro”. O código é o seguinte:

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

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

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

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:

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

Vamos preencher essa tabela com alguns valores de exemplo:

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

Utilizamos, 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 é:

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

Aqui, 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:

<table>
  <thead>
    <tr>
      <th>ID\_Cliente</th>
      <th>Sobrenome</th>
      <th>ID\_Pedido</th>
      <th>ID\_Produto</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>3</td>
      <td>Oliveira</td>
      <td>102</td>
      <td>332</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Santos</td>
      <td>104</td>
      <td>191</td>
    </tr>
  </tbody>
</table>

## `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:

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

Com isso, obtemos o seguinte resultado:

<table>
  <thead>
    <tr>
      <th>Sobrenome</th>
      <th>ID\_Produto</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Silva</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Santos</td>
      <td>191</td>
    </tr>
    <tr>
      <td>Oliveira</td>
      <td>332</td>
    </tr>
    <tr>
      <td>Souza</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Costa</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

## `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:

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

A saída seria:

<table>
  <thead>
    <tr>
      <th>Sobrenome</th>
      <th>ID\_Produto</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Oliveira</td>
      <td>332</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Santos</td>
      <td>191</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>499</td>
    </tr>
  </tbody>
</table>

Dica 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](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-vs-mysql/) e tudo sobre a [instalação do MariaDB](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/instalar-mariadb-mysql/). Além disso, você também pode aprender como [resetar a senha root no MariaDB](https://www.ionos.com/digitalguide/hosting/technical-matters/reset-mysql-mariadb-root-password/ "Reset senha root: MariaDB e MySQL").


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-join/](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-join/) for AI/LLM consumption.