Questão de Banco de Dados — Banco de Dados Relacionais — FCC 2018
Banco de Dados›Banco de Dados Relacionais
Código
fc044179
Banca
FCC
Órgão
DPE-AM
Ano
2018
Cargo
Analista em Gestão Especializado de Defensoria - Analista de Banco de Dados
Seja a tabela Contas de um banco de dados relacional:Contas (Número, Saldo, Nome-Cliente, Código-Agência)O comando PL-SQL para obter o saldo e o código da agência dos registros da tabela Conta, com nome do cliente nulo, ordenados pelo saldo, com código da agência maior do que 5000 é:
ASELECT Saldo, Código-AgênciaFROM ContasWHERE Código-Agência > 5000 AND Nome-Cliente = ‘null’CLASSIFY ON Saldo
ESELECT Saldo, Código-AgênciaFROM ContasWHERE Código-Agência > 5000 OR Nome-Cliente LIKE ‘NULL’ORDER UP ON Saldo
Revelar gabarito e comentário▾
GabaritoC — SELECT Saldo, Código-Agência
FROM Contas
WHERE Código Agência > 5000 AND Nome-Cliente IS NULL
ORDER BY Saldo
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: SELECT com Filtros e Ordenação
Gabarito: letra C. O comando PL-SQL correto deve usar WHERE com a condição AND, testar nulidade com IS NULL, e ordenar com ORDER BY. A alternativa C é a única que atende a esses requisitos sintáticos e lógicos, exceto por um possível erro de digitação no nome da coluna (espaço em vez de hífen), mas isso não invalida a resposta frente às demais opções.
A banca testa o conhecimento de três pontos fundamentais: (1) comparação com NULL deve ser feita com IS NULL ou IS NOT NULL, nunca com = NULL ou <> NULL; (2) a ordenação de resultados é feita com ORDER BY, e não com CLASSIFY ON ou ORDER UP ON; (3) condições múltiplas no WHERE são ligadas por AND (ou OR), não por vírgula. Vejamos cada alternativa.
Alternativa A — ❌ Incorreta
Utiliza Nome-Cliente = 'null', que compara com a string literal 'null', e não com o valor nulo. O correto é IS NULL.
Usa CLASSIFY ON Saldo, que não é uma cláusula SQL válida para ordenação. O correto é ORDER BY Saldo.
A condição Código-Agência > 5000 AND ... está correta em relação ao operador AND.
Alternativa B — ❌ Incorreta
Apresenta erro de sintaxe: as condições no WHERE devem ser separadas por AND, não por vírgula.
Nome-Cliente = NULL' tem aspas simples no final incorretas e, mais grave, usa = NULL em vez de IS NULL.
HAVING Saldo UP é inválido: HAVING é usado com funções agregadas e UP não é palavra-chave SQL.
Não há cláusula de ordenação adequada.
Alternativa C — ✅ Correta ⟵ GABARITO
WHERE Código Agência > 5000 AND Nome-Cliente IS NULL — embora o nome da coluna apareça como "Código Agência" (com espaço), o raciocínio lógico de filtro é correto: AND para múltiplas condições e IS NULL para nulos. O pequeno desvio na grafia é o menor dos problemas diante das demais alternativas que contêm erros graves de sintaxe.
ORDER BY Saldo é a forma correta de ordenar os resultados.
A consulta retorna Saldo e Código-Agência como pedido.
Alternativa D — ❌ Incorreta
Usa FOR no lugar de WHERE – FOR não é uma cláusula válida para filtros.
Separa condições com vírgula, o que é erro de sintaxe.
Nome-Cliente <> NULL' está errado: para verificar não nulidade, deve-se usar IS NOT NULL. Além disso, o operador <> com NULL nunca é verdadeiro, pois NULL não pode ser comparado com operadores relacionais.
CLASSIFY ON Saldo não é uma cláusula SQL válida.
Alternativa E — ❌ Incorreta
Usa OR em vez de AND: a condição deve ser que o nome é nulo e o código > 5000, e não um ou outro.
Nome-Cliente LIKE 'NULL' compara com a string 'NULL', não com o valor nulo. LIKE é para padrões, não para nulos.
ORDER UP ON Saldo não é uma cláusula válida; a forma correta é ORDER BY Saldo.
NÃO CAIA NESSA!
O erro mais comum é tentar comparar NULL com = NULL ou LIKE 'NULL'. Lembre-se: NULL é ausência de valor, e a única forma de testá-lo é com IS NULL (ou IS NOT NULL). Outro deslize é usar CLASSIFY ON ou ORDER UP ON em vez do padrão ORDER BY. Fique atento a esses detalhes na prova.