0Pricing
SQL Academy · Aula

Por que usar JOIN (recapitulação do modelo relacional)

Recapitule o modelo relacional, as tabelas normalizadas e as chaves estrangeiras, e entenda por que JOIN é a ponte que remonta dados entre tabelas.

Por que usar JOIN (recapitulação do modelo relacional) é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Normalização em uma imagem

Em vez de duplicar dados, você os divide entre tabelas:

  • users — id, nome, e-mail
  • orders — id, user_id, total

Cada pedido faz referência a um usuário pelo id, em vez de armazenar novamente o nome e o e-mail do usuário.

Por que normalizar?

Benefícios:

  • Sem duplicação — altere o e-mail de um usuário em um único lugar
  • Tabelas menores — melhor taxa de acerto da memória cache
  • Restrições impõem os relacionamentos

Chaves estrangeiras definem a ligação

A ligação é declarada com uma FOREIGN KEY:

CREATE TABLE orders (
  id BIGSERIAL PRIMARY KEY,
  user_id BIGINT NOT NULL REFERENCES users(id),
  total NUMERIC(10,2) NOT NULL
);

Reunindo dados com JOIN

Para mostrar "o nome do usuário em cada pedido", você reúne as tabelas novamente com JOIN:

SELECT o.id, o.total, u.full_name, u.email
FROM orders o
JOIN users u ON u.id = o.user_id
ORDER BY o.id;

O modelo mental: produto cartesiano filtrado

Conceitualmente, uma junção:

  1. Forma o produto cartesiano de duas tabelas, associando cada linha de A a cada linha de B
  2. Mantém apenas os pares em que a condição ON é TRUE

Na prática, o banco de dados usa uma junção por dispersão, por mesclagem ou por laços aninhados — mas o resultado é o mesmo.

Um para muitos

Um usuário pode ter muitos pedidos. O lado "muitos" contém a chave estrangeira.

-- Each order row points back to its user:
SELECT u.email, COUNT(o.id) AS order_count
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id, u.email;

Muitos para muitos por meio de uma tabela de junção

Tags ↔ Posts: introduza uma terceira tabela:

CREATE TABLE posts (id BIGSERIAL PRIMARY KEY, title TEXT);
CREATE TABLE tags  (id BIGSERIAL PRIMARY KEY, name TEXT);
CREATE TABLE post_tags (
  post_id BIGINT REFERENCES posts(id),
  tag_id  BIGINT REFERENCES tags(id),
  PRIMARY KEY (post_id, tag_id)
);

Consultando uma relação muitos para muitos

Duas junções para reunir tudo:

SELECT p.title, t.name
FROM posts p
JOIN post_tags pt ON pt.post_id = p.id
JOIN tags      t  ON t.id = pt.tag_id
WHERE t.name = 'sql';

Quando desnormalizar

A desnormalização, ou duplicação de dados, às vezes é usada para melhorar o desempenho — armazenando totais calculados em cache, colunas de texto completo e visões materializadas. Comece normalizado; desnormalize conforme as medições indicarem.

Junções versus subconsultas

Muitas consultas com JOIN podem ser escritas como subconsultas, e vice-versa. Use a forma mais clara de ler; os planejadores modernos geralmente produzem o mesmo plano.

Chaves estrangeiras não são impostas automaticamente

Você precisa declará-las com REFERENCES. Mesmo com restrições de FK, indexar a coluna de FK é responsabilidade YOUR — declare um índice explicitamente para melhorar o desempenho das junções.

Recapitulação

As junções reúnem dados que foram divididos entre tabelas para preservar a integridade.

  • As chaves estrangeiras declaram a ligação
  • JOIN desfaz a normalização no momento da consulta
  • Um para muitos usa uma FK no lado "muitos"; muitos para muitos usa uma tabela de junção

Verificação rápida

Em um relacionamento de um para muitos entre users e orders, qual tabela contém a coluna de chave estrangeira?

Perguntas Frequentes

A aula “Por que usar JOIN (recapitulação do modelo relacional)” é grátis?

Sim — o texto completo de “Por que usar JOIN (recapitulação do modelo relacional)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Por que usar JOIN (recapitulação do modelo relacional)”?

Recapitule o modelo relacional, as tabelas normalizadas e as chaves estrangeiras, e entenda por que JOIN é a ponte que remonta dados entre tabelas. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Por que usar JOIN (recapitulação do modelo relacional)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Por que usar JOIN (recapitulação do modelo relacional)
  2. Mecânica de INNER JOIN
  3. LEFT/RIGHT JOIN e junções OUTER
  4. Junções da tabela consigo mesma e apelidos
← Voltar para SQL Academy