Pular para o conteúdo principal

Tutorial de joins em SQL

Este tutorial explica como juntar tabelas usando chaves primárias e estrangeiras no SQL Server.
Atualizado 17 de set. de 2026  · 5 min lido

Explorar com IA

ChatGPTClaudePerplexity

SQL Server é um sistema de gerenciamento de banco de dados relacional. Um dos princípios básicos de um banco relacional é que os dados ficam distribuídos em várias tabelas.

Relational database management system

Para extrair os dados de que precisamos, vamos precisar juntar tabelas. Usamos chaves primary e foreign para relacioná-las.

Primary Key

Uma chave primária é uma coluna usada para identificar de forma única cada linha de uma tabela. Essa exclusividade pode ser obtida usando um inteiro sequencial como coluna de identidade. Ou, às vezes, colunas existentes já contêm valores únicos e podem ser usadas.

No exemplo abaixo, vemos as primeiras linhas da tabela artist. Ela tem duas colunas, artist_id e name. A coluna artist_id funciona como chave primária dessa tabela: é uma coluna inteira e cada valor é diferente.

+-----------+-------------------+
| artist_id | name              |
|-----------+-------------------|
| 1         | AC/DC             |
| 2         | Accept            |
| 3         | Aerosmith         |
| 4         | Alanis Morissette |
| 5         | Alice In Chains   |
+-----------+-------------------+

Agora vamos olhar a tabela album. Consegue identificar a chave primária? Sim, é a coluna album_id. É comum a chave primária seguir o padrão "nome-da-tabela" + "underline" + "id". Mas você também deve ter notado a coluna artist_id. Ela também é composta por inteiros e tem o mesmo nome da coluna artist_id na tabela artist. O que isso significa?

+----------+-------------------------+-----------+
| album_id | title                   | artist_id |  
|----------+-------------------------+-----------|
| 1        | For Those About To Rock | 1         |
| 2        | Balls to the Wall       | 2         |
| 3        | Restless and Wild       | 2         |
| 4        | Let There Be Rock       | 1         |
| 5        | Big Ones                | 3         |
+----------+-------------------------+-----------+

Foreign Keys

Pelo resultado anterior, fica claro que o artist_id na tabela artist atua como uma Foreign_key para a tabela album. A restrição FOREIGN KEY é usada para evitar ações que quebrem os vínculos entre tabelas.

  • tabela artist
+-----------+-------------------+
| artist_id | name              |
|-----------+-------------------|
| 1         | AC/DC             |
| 2         | Accept            |
| 3         | Aerosmith         |
| 4         | Alanis Morissette |
| 5         | Alice In Chains   |
+-----------+-------------------+
  • tabela album
+----------+-------------------------+-----------+
| album_id | title                   | artist_id |  
|----------+-------------------------+-----------|
| 1        | For Those About To Rock | 1         |
| 2        | Balls to the Wall       | 2         |
| 3        | Restless and Wild       | 2         |
| 4        | Let There Be Rock       | 1         |
| 5        | Big Ones                | 3         |
+----------+-------------------------+-----------+

Isso significa que, quando o artist_id na tabela album coincide com o artist_id na tabela artist, essas linhas podem ser vinculadas com um JOIN.

Juntando album e artist

As linhas 1 e 4 da tabela artist têm artist_id igual a 1. O artist_id 1 na tabela artist é AC/DC. Então, quando juntamos as duas tabelas, retornamos os detalhes do álbum a partir da tabela album e os detalhes correspondentes do artista a partir da tabela artist — unidos pelo campo artist_id, que é comum às duas tabelas.

Isso é conhecido como um inner join.

SELECT
  album_id,
  title,
  album.artist_id,
  name AS artist_name
FROM album
INNER JOIN artist ON artist.artist_id = album.artist_id
WHERE album.artist_id = 1;
+----------+-------------------------+-----------+-------------+
| album_id | title                   | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1        | For Those About To Rock | 1         | AC/DC       |
| 4        | Let There Be Rock       | 1         | AC/DC       |
+----------+-------------------------+-----------+-------------+

Juntamos as tabelas album e artist igualando o artist_id da tabela artist ao artist_id da tabela album.

Ao selecionar colunas com o mesmo nome em tabelas diferentes, você precisa qualificar totalmente o nome da coluna. Caso contrário, o SQL Server não saberá de qual tabela deve SELECT a coluna.

Para qualificar uma coluna, basta prefixá-la com o nome da tabela correspondente, seguido de um ponto.

Sintaxe de inner join

Aqui vai um exemplo genérico para relembrar a sintaxe. Primeiro selecionamos as colunas relevantes da tabela principal, neste caso a table_A, e depois qualquer coluna adicional que queremos juntar, aqui da table_B. Em seguida, definimos o join usando as palavras-chave INNER JOIN e ON, informando as colunas-chave necessárias de ambas as tabelas.

SELECT
    table_A.columnX,
    table_A.columnY,
    table_B.columnZ,
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key;

Sem usar a cláusula WHERE

Neste exemplo, não especificamos uma cláusula WHERE, então retornamos TODAS as combinações de TODOS os matches entre as tabelas artist e album, novamente com base na coluna artist_id, que é comum às duas.

SELECT
  album_id,
  title,
  album.artist_id,
  name AS artist_name
FROM album
INNER JOIN artist on artist.artist_id = album.artist_id;
+----------+---------------------------------------+-----------+
| album_id | title                   | artist_id | artist_name |
|----------+---------------------------------------+-----------|
| 1        | For Those About To Rock | 1         | AC/DC       |
| 4        | Let There Be Rock       | 1         | AC/DC       |
| 2        | Balls To The Wall       | 2         | Accept      |
| 3        | Restless and Wild       | 2         | Accept      |
+----------+---------------------------------------+-----------+

Vários inner joins

Você também pode juntar mais de duas tabelas usando INNER JOINS. Basta adicionar um INNER JOIN extra para cada combinação de tabelas. No código abaixo, juntamos as tabelas A e B e também B e C.

SELECT
  table_A.columnX,
  table_A.columnY,
  table_B.columnZ table_C columnW
FROM table_A
INNER JOIN table_B ON table_B.foreign_key = table_A.primary_key
INNER JOIN table_C ON table_C.foreign_key = table_B.primary_key;

Para saber mais sobre como juntar tabelas, veja este vídeo do nosso curso Introduction to SQL Server.

Este conteúdo foi extraído do curso Introduction to SQL Server da DataCamp, por John MacKintosh.

Tópicos
SQL
Ciência de dados

Cursos de SQL

Curso

Manipulação de dados em SQL

4 h
335.1K
Domine consultas SQL complexas no PostgreSQL para responder várias perguntas de ciência de dados e preparar conjuntos de dados robustos.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

Tutorial

Tutorial de visão geral do banco de dados SQL

Neste tutorial, você aprenderá sobre bancos de dados em SQL.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Tutorial do Insert Into SQL

A instrução "INSERT INTO" do SQL pode ser usada para adicionar linhas de dados a uma tabela no banco de dados.
DataCamp Team's photo

DataCamp Team

3 min

Tutorial

Exemplos e tutoriais de consultas SQL

Se você deseja começar a usar o SQL, nós o ajudamos. Neste tutorial de SQL, apresentaremos as consultas SQL, uma ferramenta poderosa que nos permite trabalhar com os dados armazenados em um banco de dados. Você verá como escrever consultas SQL, aprenderá sobre
Sejal Jaiswal's photo

Sejal Jaiswal

15 min

Tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

15 min

SQLAlchemy_Tutorial.

Tutorial

Tutorial de SQLAlchemy com exemplos

Aprenda a acessar e executar consultas SQL em todos os tipos de bancos de dados relacionais usando objetos Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Tutorial

Tutorial do SQL Server: Desbloqueie o poder do gerenciamento de dados

Explore o gerenciamento de dados com nosso tutorial do SQL Server. Do básico ao uso avançado, aprimore suas habilidades e navegue no SQL Server com confiança.

Kevin Babitz

13 min

Ver MaisVer Mais