Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — FUNDATEC 2025

Banco de DadosBanco de Dados Relacionais
Código
qg474855
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2025
Nível
Superior
Cargo
Analista em Computação / Ênfase em Análise de Sistemas / Gerência de Projetos de TI
Considere as tabelas CLIENTES(ID, NOME) e PEDIDOS(ID, CLIENTE_ID, VALOR). Qual consulta SQL retornaria todos os clientes, mesmo aqueles que nunca fizeram um pedido?
  1. ASELECT C.NOME, P.VALOR FROM CLIENTES C INNER JOIN PEDIDOS P ON C.ID = P.CLIENTE_ID;
  2. BSELECT C.NOME, P.VALOR FROM CLIENTES C LEFT JOIN PEDIDOS P ON C.ID = P.CLIENTE_ID;
  3. CSELECT C.NOME, P.VALOR FROM CLIENTES C RIGHT JOIN PEDIDOS P ON C.ID = P.CLIENTE_ID;
  4. DSELECT C.NOME, P.VALOR FROM CLIENTES C, PEDIDOS P;
  5. ESELECT C.NOME, P.VALOR FROM CLIENTES C JOIN PEDIDOS P;
Revelar gabarito e comentário

GabaritoB — SELECT C.NOME, P.VALOR FROM CLIENTES C LEFT JOIN PEDIDOS P ON C.ID = P.CLIENTE_ID;

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 JOINs: LEFT JOIN vs INNER JOIN vs RIGHT JOIN

Gabarito: letra B. A consulta com LEFT JOIN retorna todos os registros da tabela à esquerda (CLIENTES), incluindo aqueles sem correspondência em PEDIDOS, preenchendo com NULL os campos da tabela à direita. É a única opção que atende ao requisito de listar todos os clientes, mesmo os que nunca fizeram pedido.

A questão testa o entendimento dos tipos de junção (JOIN) em SQL e qual deles preserva os registros da tabela da esquerda independentemente de existirem correspondências na tabela da direita.

1LEFT JOIN (B ✅)
Todos da esquerda
Direita com NULL se sem correspondência
2INNER JOIN (A, E ❌)
Só correspondências em ambas
3RIGHT JOIN (C ❌)
Todos da direita
Esquerda só com correspondência
4CROSS JOIN (D ❌)
Produto cartesiano
SQL JOINs
LEVELsoulevel.com.br
SQL JOINs: LEFT JOIN (B ✅) (Todos da esquerda, Direita com NULL se sem correspondência); INNER JOIN (A, E ❌) (Só correspondências em ambas); RIGHT JOIN (C ❌) (Todos da direita, Esquerda só com correspondência); CROSS JOIN (D ❌) (Produto cartesiano)

Alternativa A — ❌ Incorreta

INNER JOIN retorna apenas os registros que possuem correspondência em ambas as tabelas. Clientes sem pedidos seriam excluídos do resultado.

Alternativa B — ✅ Correta ⟵ GABARITO

LEFT JOIN (ou LEFT OUTER JOIN) retorna todos os registros da tabela à esquerda (CLIENTES) e, quando não há correspondência em PEDIDOS, os campos da tabela da direita vêm com NULL. Exatamente o que o enunciado pede.

Alternativa C — ❌ Incorreta

RIGHT JOIN faz o oposto do LEFT JOIN: retorna todos os registros da tabela à direita (PEDIDOS) e apenas as correspondências da esquerda. Isso não atende ao requisito, pois clientes sem pedido (sem registro em PEDIDOS) seriam omitidos.

Alternativa D — ❌ Incorreta

FROM CLIENTES C, PEDIDOS P é um CROSS JOIN (produto cartesiano). Isso combina cada cliente com cada pedido, retornando um número enorme de linhas e, dependendo dos dados, pode até aparentar clientes sem pedidos (se houver pedidos com CLIENTE_ID nulo, o que não é o caso), mas não é a forma correta de obter todos os clientes. Além disso, gera resultados duplicados e sem sentido lógico.

Alternativa E — ❌ Incorreta

JOIN (sem especificação) equivale a INNER JOIN, portanto tem o mesmo efeito da alternativa A: filtra clientes sem pedido.

NÃO CAIA NESSA!

A banca troca o tipo de JOIN esperado: LEFT JOIN (correto) por RIGHT JOIN (alternativa C) ou INNER JOIN (alternativas A e E). O candidato deve lembrar que LEFT JOIN preserva a tabela da esquerda (CLIENTES).

Gabarito: letra B.

Link permanente: /questoes/qg474855