Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2025
Banco de Dados›SQL
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.
ASELECT c.nome, ct.id_contaFROM clientes cLEFT JOIN contas ct ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NOT NULL
BB SELECT ct.id_contaFROM contas ctLEFT JOIN clientes c ON c.id_cliente =ct.id_cliente
CSELECT ct.id_conta, c.nomeFROM contas ctLEFT JOIN clientes c ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NOT NULL
DSELECT c.nome, ct.id_contaFROM contas ctLEFT JOIN clientes c ON ct.id_cliente =c.id_clienteWHERE ct.saldo IS NOT NULL
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).