Em bancos de dados relacionais, as informações são normalmente separadas em várias tabelas para evitar duplicidade e melhorar a organização dos dados.
A associação de tabelas permite relacionar essas informações através de campos em comum.
CLIENTES
+----+----------+
| ID | Nome |
+----+----------+
| 1 | Ana |
| 2 | Carlos |
+----+----------+
PEDIDOS
+----+------------+------------+
| ID | Cliente_ID | Valor |
+----+------------+------------+
| 1 | 1 | 500 |
| 2 | 2 | 700 |
+----+------------+------------+
O relacionamento acontece através de uma chave que existe em comum.
CLIENTES.ID
↓
PEDIDOS.Cliente_ID
O campo Cliente_ID funciona como chave estrangeira.
| Tipo | Descrição |
|---|---|
| INNER JOIN | Retorna apenas registros correspondentes |
| LEFT JOIN | Retorna todos da tabela esquerda |
| RIGHT JOIN | Retorna todos da tabela direita |
| FULL JOIN | Retorna todos os registros das tabelas |
SELECT
clientes.nome,
pedidos.valor
FROM clientes
INNER JOIN pedidos
ON clientes.id = pedidos.cliente_id;
Retorna clientes juntamente com seus pedidos.
| Elemento | Função |
|---|---|
| Primary Key | Identifica um registro único |
| Foreign Key | Referencia outra tabela |
SELECT
c.nome,
p.data_pedido,
p.valor
FROM clientes c
JOIN pedidos p
ON c.id = p.cliente_id;
Resultado:
Ana | 10/01/2026 | 500
Carlos | 15/01/2026 | 700
| Sistema | Relacionamentos |
|---|---|
| E-commerce | Clientes, produtos e pedidos |
| Banco | Clientes e contas |
| Hospital | Pacientes e consultas |
| Escola | Alunos e matrículas |
| Erro | Problema |
|---|---|
| Relacionar campos incorretos | Dados inconsistentes |
| Esquecer condição ON | Produto cartesiano |
| Não usar índices | Consulta lenta |
| Duplicar informações | Problemas de manutenção |