# JOIN no MariaDB: combinar conjuntos de dados de várias tabelas

Num sistema de gestão de bases de dados relacionais, pode comparar conjuntos de dados de diferentes 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 combinação com `SELECT` e pode ser dividida em diferentes categorias, como `INNER JOIN`, `LEFT OUTER JOIN` e `RIGHT OUTER JOIN`, que lhe mostramos em detalhe.

## Sintaxe e funcionamento

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

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

Use `SELECT` para selecionar 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 resultados que coincidem (ou seja, que estão presentes em ambas as tabelas) são apresentados juntos numa tabela de resultados. As entradas que não coincidem não são consideradas.

## Exemplo de `INNER JOIN` no MariaDB

Aqui está um exemplo simples para que veja como funciona `INNER JOIN` no MariaDB. Precisamos de uma base de dados com duas tabelas; a primeira tabela chamaremos de «Lista de clientes» e a segunda «Pedidos». Primeiro, criamos a tabela «Lista\_de\_clientes» com [MariaDB CREATE TABLE](https://www.ionos.com/pt-pt/digitalguide/hospedagem/questoes-tecnicas/mariadb-criar-tabela/). Ela contém as colunas «Numero\_de\_cliente», «Apellido», «Nombre», «Ciudad» e «Fecha\_de\_creacion». O código é o seguinte:

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

Preenchemos a tabela com alguns valores usando `INSERT INTO`:

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

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:

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

Também completamos essa tabela com valores de exemplo:

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

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

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

O sistema verifica a coluna «Apelido» da tabela «Lista\_de\_clientes» e a coluna «Nome\_do\_cliente» da tabela «Pedidos». Se ambos os valores coincidirem, 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:

<table>
  <thead>
    <tr>
      <th>Número\_de\_cliente</th>
      <th>Apelido</th>
      <th>Número\_do\_pedido</th>
      <th>Número\_do\_artigo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>García</td>
      <td>101</td>
      <td>247</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Martínez</td>
      <td>104</td>
      <td>191</td>
    </tr>
    <tr>
      <td>3</td>
      <td>López</td>
      <td>102</td>
      <td>332</td>
    </tr>
  </tbody>
</table>

## `LEFT OUTER JOIN`

O `LEFT OUTER JOIN` no MariaDB funciona de forma semelhante 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 corresponder, aparece **NULL na célula correspondente**. Seguindo o exemplo anterior, o comando seria o seguinte:

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

O resultado obtido é o seguinte:

<table>
  <thead>
    <tr>
      <th>Apelido</th>
      <th>Número\_do\_artigo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>García</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Martínez</td>
      <td>191</td>
    </tr>
    <tr>
      <td>López</td>
      <td>332</td>
    </tr>
    <tr>
      <td>Sánchez</td>
      <td>NULL</td>
    </tr>
    <tr>
      <td>Fernández</td>
      <td>NULL</td>
    </tr>
  </tbody>
</table>

## `RIGHT OUTER JOIN`

No MariaDB, `RIGHT OUTER JOIN` funciona exatamente ao contrário. Os **dados da segunda tabela ou tabela direita são combinados com os valores correspondentes da primeira tabela ou tabela esquerda**. Se não corresponderem, tal como no `LEFT OUTER JOIN`, o valor NULL aparece na célula correspondente. Aqui está o código:

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

O resultado obtido é o seguinte:

<table>
  <thead>
    <tr>
      <th>Nome\_do\_cliente</th>
      <th>Número\_do\_artigo</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>García</td>
      <td>247</td>
    </tr>
    <tr>
      <td>López</td>
      <td>332</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>247</td>
    </tr>
    <tr>
      <td>Martínez</td>
      <td>191</td>
    </tr>
    <tr>
      <td>NULL</td>
      <td>499</td>
    </tr>
  </tbody>
</table>

Dica No nosso Guia Digital, encontrará muitas instruções e explicações úteis sobre o MariaDB. Por exemplo, encontrará uma comparação entre o MariaDB e o MySQL e tudo o que precisa de saber sobre como instalar o MariaDB.


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