Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FUNDATEC 2023

Banco de DadosConsultas e Comandos em SQL
Código
qa538178
Banca
FUNDATEC
Órgão
CAU RS
Ano
2023
Cargo
Ana Sup ( )
PROJETO
IDDESCRICAOTIPOPRAZO_EXECUCAO_DIAS
1DecoraçãoA110
2MarcenariaB275
3ElétricaA360
4AlvenariaC1120
5RevestimentosC2105
6HidráulicaA345
 

Qual dos comandos SQL abaixo poderia ser utilizado para excluir apenas os registros da Tabela PROJETO cujo campo PRAZO_EXECUCAO_DIAS seja superior a 60 e inferior a 120?

  1. ADELETE ALL FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS < 60 AND PRAZO_EXECUCAO_DIAS > 120
  2. BDELETE FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS IN (60, 120)
  3. CDELETE * FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS BETWEEN 60 AND 120
  4. DDELETE FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS > 60 AND PRAZO_EXECUCAO_DIAS < 120
  5. EDELETE * FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS >= 60 OR PRAZO_EXECUCAO_DIAS <= 120
Revelar gabarito e comentário

GabaritoD — DELETE FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS > 60 AND PRAZO_EXECUCAO_DIAS < 120

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

Comando DELETE no SQL

Gabarito: letra D. O comando DELETE FROM PROJETO WHERE PRAZO_EXECUCAO_DIAS > 60 AND PRAZO_EXECUCAO_DIAS < 120 é o único que atende exatamente ao critério pedido: excluir registros com prazo superior a 60 e inferior a 120 dias. A sintaxe correta do DELETE não usa ALL nem *, e a condição deve combinar os dois limites com o operador lógico AND.

O comando DELETE é a instrução da linguagem SQL responsável por remover linhas de uma tabela. Ele pertence à sublinguagem DML (Data Manipulation Language), que agrupa os comandos que interagem com os dados dentro das tabelas — ao lado de INSERT (inserir) e UPDATE (atualizar). A sintaxe básica é DELETE FROM nome_da_tabela WHERE condição;. Sem a cláusula WHERE, o comando apagaria todas as linhas da tabela — um perigo clássico em provas e na prática.

A cláusula WHERE é o coração da questão: é ela que filtra quais linhas serão afetadas. Para expressar um intervalo exclusivo (valores entre dois limites, sem incluí-los), usamos dois operadores de comparação combinados por AND: campo > 60 AND campo < 120. Isso seleciona apenas os valores 75 e 105 da tabela PROJETO (Marcenaria e Revestimentos).

A banca explora três armadilhas típicas neste tema: (1) a sintaxe errada do DELETE — não existe DELETE ALL FROM nem DELETE * FROM no padrão SQL; (2) a confusão entre intervalo exclusivo (> 60 AND < 120) e inclusivo (BETWEEN 60 AND 120, que incluiria 60 e 120); e (3) a troca dos operadores lógicos AND/OR e dos sinais de comparação, que inverte completamente o conjunto de registros afetados.

Guarde o par sintaxe × condição: é exatamente nele que as alternativas se dividem. A alternativa correta precisa acertar os dois — a forma do comando e a lógica do filtro.

Alternativa A — ❌ Incorreta

Apresenta duas falhas graves. Primeiro, a sintaxe DELETE ALL FROM não existe no padrão SQL — o correto é apenas DELETE FROM. Segundo, a condição PRAZO_EXECUCAO_DIAS < 60 AND PRAZO_EXECUCAO_DIAS > 120 é logicamente impossível: nenhum número pode ser simultaneamente menor que 60 e maior que 120. O comando, se fosse válido, não excluiria nenhum registro.

Alternativa B — ❌ Incorreta

A sintaxe DELETE FROM está correta, mas a condição IN (60, 120) seleciona apenas os registros cujo prazo é exatamente 60 ou exatamente 120 dias. Isso excluiria os projetos Elétrica (60) e Alvenaria (120) — justamente os que não devem ser excluídos, pois o enunciado pede valores superiores a 60 e inferiores a 120. O operador IN verifica pertencimento a uma lista de valores específicos, não a um intervalo.

Alternativa C — ❌ Incorreta

A sintaxe DELETE * FROM está errada — o * (asterisco) é usado no SELECT * para indicar "todas as colunas", mas não faz parte da sintaxe do DELETE. Além disso, o operador BETWEEN 60 AND 120 é inclusivo: inclui os extremos 60 e 120. O comando excluiria os projetos Elétrica (60) e Alvenaria (120), que deveriam ser preservados. O critério pedido é um intervalo exclusivo (superior a 60 e inferior a 120), que o BETWEEN não atende.

Alternativa D — ✅ Correta ⟵ GABARITO

A sintaxe DELETE FROM PROJETO está correta, e a condição PRAZO_EXECUCAO_DIAS > 60 AND PRAZO_EXECUCAO_DIAS < 120 expressa exatamente o intervalo exclusivo pedido: valores maiores que 60 e menores que 120. Aplicando à tabela, seriam excluídos apenas os registros com prazo 75 (Marcenaria) e 105 (Revestimentos). O operador AND exige que ambas as condições sejam verdadeiras simultaneamente, o que é a lógica correta para um intervalo.

Alternativa E — ❌ Incorreta

Apresenta dois erros. Primeiro, a sintaxe DELETE * FROM é inválida. Segundo, e mais grave, o operador lógico usado é OR em vez de AND: a condição PRAZO_EXECUCAO_DIAS >= 60 OR PRAZO_EXECUCAO_DIAS <= 120 é verdadeira para qualquer valor de prazo — todo número é maior ou igual a 60 ou menor ou igual a 120. Na prática, o comando excluiria todos os registros da tabela PROJETO, o que contraria totalmente o enunciado.

NÃO CAIA NESSA!

A banca adora inverter os operadores lógicos e os sinais de comparação para confundir. Aqui, a alternativa E troca o AND por OR, o que transforma o filtro em uma condição que aceita tudo — e o candidato que lê rápido marca sem perceber que o comando apagaria a tabela inteira. Fique atento: para um intervalo, o AND é obrigatório; o OR só é usado para unir condições alternativas.

NÃO CAIA NESSA!

Na hora da prova, monte mentalmente a "reta numérica" do intervalo. Para "superior a 60 e inferior a 120", desenhe os limites abertos (bolinha vazia) e veja quais valores caem no meio. Depois, confira a sintaxe: DELETE FROM (sem ALL, sem *) + WHERE com a condição correta. Essa checagem em dois passos elimina as pegadinhas de sintaxe e de lógica.

Gabarito: letra D — a única que combina a sintaxe correta do DELETE com a condição de intervalo exclusivo (> 60 AND < 120).

Link permanente: /questoes/qa538178