Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FUNDATEC 2026

Banco de DadosSQL
Código
qg685301
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Programação Básica e Programação Web
Dadas as tabelas Autores (id_autor, nome_autor) e Livros (id_livro, titulo, id_autor), qual consulta SQL retorna o titulo de todos os livros e o nome_autor correspondente, incluindo livros que não possuem um autor associado na tabela Autores (ou seja, id_autor nulo em Livros)?
  1. ASELECT L.titulo, A.nome_autor FROM Livros L INNER JOIN Autores A ON L.id_autor = A.id_autor;
  2. BSELECT L.titulo, A.nome_autor FROM Livros L RIGHT JOIN Autores A ON L.id_autor = A.id_autor;
  3. CSELECT L.titulo, A.nome_autor FROM Livros L LEFT JOIN Autores A ON L.id_autor = A.id_autor;
  4. DSELECT L.titulo, A.nome_autor FROM Livros L FULL OUTER JOIN Autores A ON L.id_autor = A.id_autor;
  5. ESELECT L.titulo, A.nome_autor FROM Livros L, Autores A WHERE L.id_autor = A.id_autor ORL.id_autor ISNULL;
Revelar gabarito e comentário

GabaritoC — SELECT L.titulo, A.nome_autor FROM Livros L LEFT JOIN Autores A ON L.id_autor = A.id_autor;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Cláusula JOIN – LEFT JOIN

Gabarito: letra C. O LEFT JOIN retorna todos os registros da tabela da esquerda (Livros) e, quando há correspondência, os dados da tabela da direita (Autores). Caso não haja autor associado (id_autor nulo), os campos da tabela Autores vêm como NULL – exatamente o que o enunciado pede: todos os títulos com o nome do autor, inclusive livros sem autor.

A questão testa o conhecimento dos tipos de JOIN e o tratamento de valores nulos. Vamos analisar cada alternativa:

1LEFT JOIN (tabela da esquerda)
Todos os registros da esquerda
Correspondência da direita (ou NULL)
Caso: livros com ou sem autor
2INNER JOIN
Só registros com correspondência
Caso: livros com autor apenas
3RIGHT JOIN (tabela da direita)
Todos os registros da direita
Não garante todos da esquerda
4FULL OUTER JOIN
Todos de ambas as tabelas
Inclui autores sem livros
5Produto cartesiano (vírgula + WHERE)
OR com NULL gera repetição
JOINs em SQL
LEVELsoulevel.com.br
JOINs em SQL: LEFT JOIN (tabela da esquerda) (Todos os registros da esquerda, Correspondência da direita (ou NULL), Caso: livros com ou sem autor); INNER JOIN (Só registros com correspondência, Caso: livros com autor apenas); RIGHT JOIN (tabela da direita) (Todos os registros da direita, Não garante todos da esquerda); FULL OUTER JOIN (Todos de ambas as tabelas, Inclui autores sem livros); Produto cartesiano (vírgula + WHERE) (OR com NULL gera repetição)

Alternativa A – ❌ Incorreta

INNER JOIN retorna apenas as linhas com correspondência em ambas as tabelas. Livros com id_autor nulo são excluídos do resultado, pois não há correspondência na tabela Autores.

Alternativa B – ❌ Incorreta

RIGHT JOIN retorna todos os registros da tabela da direita (Autores) e os correspondentes da esquerda. Isso traria todos os autores, inclusive aqueles sem livros, mas não garante que todos os livros apareçam – especialmente os sem autor, pois a tabela da esquerda (Livros) é a que tem o dado que queremos preservar.

Alternativa C – ✅ Correta ⟵ GABARITO

LEFT JOIN é a escolha certa. A tabela da esquerda é Livros L. O comando lista todos os títulos e, quando existe autor, o nome; quando L.id_autor é nulo, o campo A.nome_autor vem como NULL, atendendo ao requisito de incluir livros sem autor.

Alternativa D – ❌ Incorreta

FULL OUTER JOIN retorna todos os registros de ambas as tabelas. Além dos livros, traria também autores sem livros (com título NULL), o que foge do solicitado. O enunciado pede todos os livros, não todos os autores.

Alternativa E – ❌ Incorreta

A sintaxe com vírgula (produto cartesiano) e a condição WHERE L.id_autor = A.id_autor OR L.id_autor IS NULL parece funcionar, mas produz um resultado errado. Para cada livro com id_autor nulo, a condição L.id_autor IS NULL é verdadeira para todas as linhas da tabela Autores, gerando um produto cartesiano: o título do livro repete-se para cada autor cadastrado. Não é o que se deseja.

NÃO CAIA NESSA!

A alternativa E é tentadora porque parece uma solução lógica, mas o OR L.id_autor IS NULL faz com que, para livros sem autor, a condição seja verdadeira para todo autor, resultando em múltiplas linhas indesejadas. O LEFT JOIN é a forma correta e mais limpa de resolver.

Gabarito: letra C.

Link permanente: /questoes/qg685301