Questão de Banco de Dados — SQL — CESPE / CEBRASPE 2025
- Código
- ce223984
- Banca
- CESPE / CEBRASPE
- Órgão
- Polícia Federal
- Ano
- 2025
- Nível
- Superior

- CCerto
- EErrado

GabaritoE — Errado
Gabarito: Errado. A afirmação está incorreta porque a regra de negócio definida na tabela catalogo para a coluna valor_venda é valor_venda > 0, ou seja, os valores devem ser maiores que zero, e não menores. O comando SELECT * FROM catalogo WHERE nome_tabela = 'vendas' apenas recupera os registros da tabela catalogo cujo nome da tabela seja 'vendas', sem qualquer relação com a validação de valor_venda.
O comando SELECT é a instrução fundamental da linguagem SQL para recuperar dados de um banco de dados. Sua sintaxe básica é SELECT colunas FROM tabela WHERE condição. A cláusula WHERE é usada para filtrar as linhas que serão retornadas, aplicando uma condição lógica sobre as colunas. No código apresentado, a condição é nome_tabela = 'vendas', o que significa que apenas as linhas da tabela catalogo onde a coluna nome_tabela tem o valor 'vendas' serão retornadas.
A confusão da questão reside na interpretação da regra de negócio. No INSERT INTO Catalogo, a coluna regras_negocio recebe o valor 'valor_venda>0'. Isso estabelece uma restrição de integridade que determina que o valor da coluna valor_venda deve ser positivo (maior que zero). Essa regra é uma especificação de negócio, não uma condição de consulta. O comando SELECT não valida nem aplica essa regra; ele apenas consulta os dados conforme a condição do WHERE.
Na prática, se um registro fosse inserido com valor_venda negativo, ele violaria a regra de negócio, mas o SELECT ainda o retornaria se a condição nome_tabela = 'vendas' fosse atendida. A regra de negócio é uma diretriz para a aplicação, não um filtro automático do banco de dados. Portanto, a afirmação de que "os valores da coluna valor_venda devem ser menores que zero" é exatamente o oposto do que a regra estabelece.
A pegadinha da banca está em inverter o sinal da regra de negócio. O candidato pode ler rapidamente valor_venda>0 e, por associação com a palavra "venda" (que pode sugerir saída de dinheiro), interpretar erroneamente que o valor deve ser negativo. No entanto, a regra é clara: valor_venda deve ser maior que zero. Além disso, é importante destacar que o comando SELECT não tem relação com a validação dessa regra; ele apenas recupera os dados conforme a condição do WHERE.
A afirmação está errada porque a regra de negócio valor_venda>0 determina que os valores da coluna valor_venda devem ser maiores que zero, e não menores. O comando SELECT * FROM catalogo WHERE nome_tabela='vendas' apenas recupera os registros da tabela catalogo onde o nome da tabela é 'vendas', sem qualquer relação com a validação de valor_venda. A banca inverteu o sinal da regra, transformando > em <, o que torna a afirmação falsa.
Gabarito: Errado
Link permanente: /questoes/ce223984