Hoje a gente vai entrar em um dos assuntos mais legais quando se fala de bancos de dados relacionais — juntar dados de várias tabelas usando JOIN. É uma ferramenta poderosa que abre portas pra criar relações complexas e fazer análises maneiras.
Pensa que seu banco de dados é tipo um quadrinho gigante, onde cada tabela separada é um quadro diferente. Pra montar a história completa, você precisa juntar esses quadros. É aí que entra o JOIN. Juntar dados é o processo que permite que uma consulta pegue informação de várias tabelas e conecte tudo baseado em condições que você define.
Bancos de dados relacionais são construídos em cima da ideia de relações entre tabelas. Cada tabela guarda info sobre uma entidade específica, e pra ter uma visão mais completa, a gente geralmente quer conectar dados de tabelas diferentes. Por exemplo:
- A tabela
studentstem a lista dos estudantes. - A tabela
coursesguarda a lista dos cursos. - A tabela
enrollmentsmostra quem tá em qual curso.
Pra saber qual estudante tá em qual curso, a gente precisa juntar essas tabelas. Em entrevistas, quem manja de JOIN já passa uma vibe de profissional, porque é uma das skills mais procuradas pra quem trabalha com dados.
Tipos principais de junção
No PostgreSQL tem vários tipos de JOIN, e cada um serve pra uma situação diferente. Vamos ver eles de forma geral, sem complicar com exemplos difíceis agora:
Tipo de JOIN |
Descrição |
|---|---|
INNER JOIN |
Retorna só as linhas que têm correspondência nas duas tabelas. |
LEFT JOIN |
Retorna todas as linhas da tabela da esquerda, e da direita só as que batem. |
RIGHT JOIN |
Retorna todas as linhas da tabela da direita, e da esquerda só as que batem. |
FULL OUTER JOIN |
Retorna todas as linhas das duas tabelas, preenchendo com NULL onde não tem correspondência. |
Qual JOIN usar depende do que você precisa:
- Se você só quer os dados que batem nas duas tabelas, usa
INNER JOIN. - Se quer manter todos os dados de uma tabela e só os que batem da outra, vai de
LEFT JOINouRIGHT JOIN. - Se precisa de tudo das duas tabelas, mesmo que não bata, usa
FULL OUTER JOIN.
Bora ver esses tipos de junção na prática.
Exemplo de problema — "Quem tá em qual curso?"
Imagina que a gente tem três tabelas:
Tabela students
| id | name |
|---|---|
| 1 | Otto |
| 2 | Anna |
| 3 | Peter |
Tabela courses
| id | title |
|---|---|
| 101 | Matemática |
| 102 | Inglês |
Tabela enrollments
| student_id | course_id |
|---|---|
| 1 | 101 |
| 2 | 102 |
Essas tabelas se conectam assim:
- O campo
idemstudentsé o identificador único do estudante. - O campo
idemcoursesé o identificador único do curso. - Na tabela
enrollments, as colunasstudent_idecourse_idfazem a ligação entre estudantes e cursos.
Vamos supor que a gente quer saber: qual estudante tá matriculado em qual curso?
Dá pra responder isso usando JOIN. A gente vai juntar as tabelas usando as relações delas:
- Junta
studentseenrollmentspeloid = student_id. - Junta
enrollmentsecoursespelocourse_id = id.
O SQL vai ficar assim:
SELECT students.name, courses.title
FROM enrollments
JOIN students ON enrollments.student_id = students.id
JOIN courses ON enrollments.course_id = courses.id;
O que esse SQL faz:
FROM enrollments— começa pela tabela que liga estudantes e cursos.JOIN students ON enrollments.student_id = students.id— junta os estudantes pra pegar os nomes.JOIN courses ON enrollments.course_id = courses.id— junta os cursos pra pegar os títulos.
O resultado vai ser assim:
| name | title |
|---|---|
| Otto | Matemática |
| Anna | Inglês |
Repara: se um estudante não tiver nenhum curso, ele não aparece no resultado — porque o JOIN padrão é o estrito (INNER JOIN). Depois a gente vai ver como incluir esses estudantes usando LEFT JOIN.
Se ficou alguma dúvida nesse SQL, relaxa! O objetivo das próximas aulas é justamente te ajudar a entender tudo isso aos poucos!
Pra que serve isso na vida real?
Agora que você já entendeu como juntar tabelas, bora falar do mundo real. Já pensou como funciona uma loja online? Tipo, quando você escolhe um smartphone e vê os comentários de outros usuários.
- A tabela
productstem as infos dos produtos. - A tabela
reviewstem os comentários dos clientes. - A tabela
customerstem as infos dos próprios clientes.
Pra mostrar os comentários no site, tem que juntar as tabelas products, reviews e customers. Isso é o JOIN funcionando na prática.
No que prestar atenção?
Antes da gente se aprofundar em JOIN nas próximas aulas, se liga nesses pontos:
- A ordem no
JOINimporta. Por exemplo,LEFT JOINretorna as linhas da tabela da esquerda, então se você trocar a ordem, muda o resultado. - Trabalhe com tabelas pequenas. No começo, evita consultar milhões de linhas. Lembra: até a consulta mais simples tem que ser fácil de entender.
- Pense sempre nas relações. Quando você acostumar a ver as tabelas como partes de uma estrutura maior, trabalhar com
JOINvai ficar natural.
A partir de hoje, a gente começa a virar especialista em SQL. Na próxima aula você vai aprender a usar INNER JOIN pra buscar dados de duas tabelas. Vai ser um passo importante no seu aprendizado de PostgreSQL.
GO TO FULL VERSION