Pular para o conteúdo principal

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

Banco de DadosSQL
Código
ce195348
Banca
CESPE / CEBRASPE
Órgão
BANRISUL
Ano
2025
Nível
Superior
Cargo
Técnico em Tecnologia da Informação II - Área: Administração de Banco de Dados
Em um sistema bancário, existem duas tabelas: clientes (id_cliente, nome); e contas (id_conta, id_cliente, saldo). Pretende-se obter uma lista que contenha o id_conta e o nome dos clientes que possuem conta associada, incluídos somente os registros em que haja saldo informado na conta (ou seja, saldo não nulo).Com base nessa situação hipotética, assinale a opção que corresponde à consulta correta para exibir os dados solicitados.
  1. ASELECT c.nome, ct.id_contaFROM clientes cLEFT JOIN contas ct ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NOT NULL
  2. BB SELECT ct.id_contaFROM contas ctLEFT JOIN clientes c ON c.id_cliente =ct.id_cliente
  3. CSELECT ct.id_conta, c.nomeFROM contas ctLEFT JOIN clientes c ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NOT NULL
  4. DSELECT c.nome, ct.id_contaFROM contas ctLEFT JOIN clientes c ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NOT NULL
  5. ESELECT c.nome, ct.id_contaFROM contas ctLEFT JOIN clientes c ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NULL
Revelar gabarito e comentário

GabaritoC — SELECT ct.id_conta, c.nome FROM contas ct LEFT JOIN clientes c ON ct.id_cliente = c.id_cliente WHERE ct.saldo IS NOT NULL

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

Consulta SQL com JOIN e filtro IS NOT NULL

Gabarito: letra C. A consulta correta deve selecionar o id_conta e o nome dos clientes cujas contas possuam saldo não nulo. Isso é obtido com um LEFT JOIN (ou INNER JOIN) partindo da tabela contas (pois são os registros de conta que interessam), unindo com clientes pelo id_cliente, e filtrando com WHERE ct.saldo IS NOT NULL. A alternativa C atende exatamente, com os campos na ordem solicitada (id_conta, nome).

A banca testa dois pontos: (1) o uso correto do IS NOT NULL em vez de = NULL ou <> NULL (em SQL, comparações com NULL usam operadores próprios); (2) a ordem dos campos selecionados e a tabela principal da junção.

Lei não se aplica; trata-se de sintaxe SQL padrão.

Alternativa A — ❌ Incorreta

A cláusula SELECT traz c.nome antes de ct.id_conta, invertendo a ordem pedida (id_conta, nome). Além disso, a junção parte de clientes como tabela base, o que pode gerar resultado correto mas foge da lógica mais direta (a conta é o objeto principal). A ordem dos campos é um erro formal.

Alternativa B — ❌ Incorreta

Falta selecionar o nome do cliente. A consulta retorna apenas ct.id_conta, não atendendo à solicitação que exige também o nome.

Alternativa C — ✅ Correta ⟵ GABARITO

Seleciona ct.id_conta e c.nome na ordem exata (id_conta, nome). Parte de contas ct, faz LEFT JOIN com clientes c na condição ct.id_cliente = c.id_cliente, e filtra com WHERE ct.saldo IS NOT NULL. Tudo conforme o enunciado.

Alternativa D — ❌ Incorreta

Apesar de selecionar os campos corretos e aplicar o filtro certo, a ordem está invertida: c.nome antes de ct.id_conta. O enunciado especifica "contenha o id_conta e o nome", subentendendo-se a ordem informada.

Alternativa E — ❌ Incorreta

O filtro WHERE ct.saldo IS NULL é o oposto do pedido. A consulta retornaria apenas contas com saldo nulo, o que não atende.

PEGA ESSA DICA!

Em SQL, para filtrar valores nulos use sempre IS NULL ou IS NOT NULL. Compare, por exemplo, com = NULL que resulta em UNKNOWN e não é aceito. Na hora de construir JOINs, defina a tabela principal conforme o que se deseja listar (aqui, contas).

Link permanente: /questoes/ce195348