Em bancos de dados relacionais, a informação é armazenada como um conjunto de tabelas relacionadas. Para extrair dados significativos delas, você precisa saber como uni-las. A operação JOIN em SQL é usada para esse propósito. Ela permite combinar linhas de duas ou mais tabelas com base em uma coluna relacionada.
Esta lição estabelece a base para entender o JOIN como um conceito-chave para trabalhar com dados relacionais.
Um JOIN é um mecanismo que permite combinar linhas de diferentes tabelas em um único conjunto de resultados. A união é realizada com base em uma condição que, na maioria das vezes, compara valores em colunas-chave.
Imagine duas tabelas: customer (cliente) e payment (pagamento). A tabela payment tem uma coluna customer_id que indica qual cliente fez o pagamento. Um JOIN permite "colar" as linhas dessas duas tabelas para que, para cada pagamento, você possa ver o nome do cliente, e não apenas seu ID.
Como funciona:
ON, por exemplo, customer.customer_id = payment.customer_id.Visualização:
Table A (customer) Table B (payment)
+----+-------+ +----+----------+
| id | name | | id | amount |
+----+-------+ +----+----------+
| 1 | Ivan | <-----\ | 1 | 100.00 |
| 2 | Maria | \--->| 1 | 50.00 |
| 3 | Petr | | 3 | 200.00 |
+----+-------+ +----+----------+
As setas mostram como as linhas da tabela payment encontram seu cliente correspondente na tabela customer com base no id correspondente.
Vamos ver como isso se parece em uma consulta SQL real usando o banco de dados Sakila.
Obtendo uma lista de clientes e seus pagamentos:
Esta consulta une as tabelas customer e payment para mostrar o nome e o sobrenome do cliente ao lado de cada pagamento.
SELECT
c.first_name,
c.last_name,
p.amount,
p.payment_date
FROM
customer AS c
JOIN
payment AS p ON c.customer_id = p.customer_id;
JOIN payment AS p especifica que estamos unindo a tabela payment.ON c.customer_id = p.customer_id é a condição que define como as linhas estão relacionadas.c e p são aliases (apelidos), que tornam a consulta mais curta e legível.Obtendo uma lista de filmes e seu idioma:
Vamos unir as tabelas film e language para mostrar o título de cada filme e o idioma em que ele está.
SELECT
f.title,
l.name AS language
FROM
film AS f
JOIN
language AS l ON f.language_id = l.language_id;
Aqui, a relação é estabelecida através da chave language_id.
ON, que define como as linhas estão relacionadas.customer AS c) é uma boa prática que melhora a legibilidade da consulta.JOIN não modifica os dados originais; ele apenas cria um conjunto de resultados temporário de linhas.Nas próximas lições, exploraremos os diferentes tipos de joins (INNER JOIN, LEFT JOIN, RIGHT JOIN) em detalhes e veremos como eles afetam o resultado final.