Pular para o conteúdo principal

Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2023

Banco de DadosSQL
Código
ce161067
Banca
CESPE / CEBRASPE
Órgão
SERPRO
Ano
2023
Nível
Superior
Cargo
Analista - Especialização: Tecnologia
Considerando que existem diferentes tipos de banco de dados, como os bancos de dados relacionais e os não relacionais (ou NoSQL), julgue o item a seguir.Considere-se que, em um banco de dados, constem duas tabelas — clientes e pedidos — e que na primeira tabela haja informações dos clientes, como ID, nome e endereço, e na segunda tabela, informações dos pedidos realizados pelos clientes, como ID do pedido, data e valor total. Nessa situação hipotética, para retornar ao nome e ao endereço de clientes que já realizaram pedidos, é correto usar o comando SELECT em conjunto com a cláusula LEFT JOIN.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoC — Certo

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”.

SQL: LEFT JOIN para filtrar clientes com pedidos

Gabarito: ✅ CERTO. A afirmativa está correta porque, embora o LEFT JOIN por si só retorne todos os clientes (inclusive os que nunca fizeram pedidos), é perfeitamente válido utilizar a cláusula LEFT JOIN em conjunto com uma condição WHERE que filtre os registros nulos da tabela pedidos, obtendo exatamente os clientes que já realizaram pedidos. A banca considera que a afirmação "é correto usar o comando SELECT em conjunto com a cláusula LEFT JOIN" é verdadeira, pois essa construção é uma das formas possíveis de atingir o resultado desejado.

A questão testa o conhecimento sobre junções em SQL, especialmente a diferença entre INNER JOIN e LEFT JOIN. O candidato pode ser levado a pensar que apenas o INNER JOIN é adequado, mas o LEFT JOIN com filtro também resolve.

Detalhamento:

  • INNER JOIN: retorna apenas os registros que possuem correspondência em ambas as tabelas. Se a intenção é listar clientes que já fizeram pedidos, essa é a abordagem mais direta.

  • LEFT JOIN: retorna todos os registros da tabela esquerda (clientes) e, quando houver correspondência, os dados da tabela direita (pedidos). Para os clientes sem pedidos, os campos de pedidos ficam NULL.

  • LEFT JOIN + WHERE: aplicando WHERE pedidos.id IS NOT NULL, eliminam-se os clientes sem pedidos, obtendo-se o mesmo resultado de um INNER JOIN.

Portanto, a afirmação está correta; é possível usar LEFT JOIN para esse fim, desde que complementado com a cláusula WHERE adequada.

  1. 1LEFT JOIN clientes × pedidos
  2. 2Clientes sem pedido → NULL
  3. 3WHERE pedidos.id IS NOT NULL
  4. 4Filtra só quem tem pedido
LEVEL · soulevel.com.br
PEGA ESSA DICA!

Na prova, desconfie de afirmações que dizem "é correto usar LEFT JOIN" para retornar apenas registros correspondentes. Lembre-se de que LEFT JOIN mais WHERE com IS NOT NULL equivale a INNER JOIN. Se a questão cobrar a forma mais eficiente ou a mais direta, prefira INNER JOIN. Mas a afirmação de que é possível usar LEFT JOIN é verdadeira.

Exemplo:

SELECT c.nome, c.endereco
FROM clientes c
LEFT JOIN pedidos p ON c.id = p.cliente_id
WHERE p.id IS NOT NULL;

Gabarito: ✅ CERTO.

Link permanente: /questoes/ce161067