Pular para o conteúdo principal

Questão de Banco de Dados — SQL — Quadrix 2024

Banco de DadosSQL
Código
qg347818
Banca
Quadrix
Órgão
COREN-PR
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Quanto à Linguagem de Modelagem Unificada (UML), aos diagramas utilizados na Análise Orientada a Objetos e à Structured Query Language (SQL), julgue o item a seguir.DELETE *FROM EnfermeiroWHERE ID = 121;
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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: ERRADO (alternativa E). A instrução apresentada está incorreta porque a sintaxe do comando DELETE no SQL não utiliza o asterisco (*) após a palavra-chave DELETE — a forma correta é simplesmente DELETE FROM Enfermeiro WHERE ID = 121;. O * é um curinga usado no comando SELECT para indicar "todas as colunas", mas no DELETE ele não tem função e torna a instrução inválida na maioria dos SGBDs relacionais.

O comando DELETE é um dos comandos da DML (Data Manipulation Language), a sublinguagem do SQL responsável por manipular os dados dentro das tabelas. Enquanto o SELECT é usado para consultar (recuperar) dados, o INSERT para inserir novos registros e o UPDATE para modificar registros existentes, o DELETE é o comando utilizado para excluir registros de uma tabela. A sintaxe básica do DELETE é:

DELETE FROM nome_da_tabela
WHERE condição;

A cláusula WHERE é opcional, mas extremamente importante: se omitida, todos os registros da tabela serão excluídos. No comando do enunciado, a intenção é excluir apenas o registro do enfermeiro cujo ID é igual a 121, o que é uma operação válida e comum. O problema está exclusivamente no * após o DELETE.

Por que o * é inválido no DELETE? Porque o DELETE opera sobre linhas inteiras (registros), não sobre colunas específicas. Não faz sentido "selecionar colunas" para excluir — ou a linha é removida por completo, ou não é. O * é um curinga que pertence à sintaxe do SELECT, onde SELECT * significa "selecione todas as colunas". No DELETE, a instrução já implica a remoção da linha inteira, então o * é redundante e sintaticamente incorreto.

Vale notar que alguns SGBDs podem ser mais tolerantes e aceitar a sintaxe com * (como o MySQL em certas configurações), mas o padrão SQL/ANSI e a grande maioria dos bancos de dados relacionais (Oracle, PostgreSQL, SQL Server, etc.) rejeitam essa forma. Em provas de concurso, a banca espera que o candidato conheça a sintaxe padrão e identifique o erro.

A pegadinha aqui é clássica: o candidato que está acostumado com SELECT * FROM ... pode transferir automaticamente o * para o DELETE, sem perceber que a sintaxe é diferente. É uma armadilha de "transferência de conhecimento" — saber a sintaxe de um comando não significa que ela se aplica a outro.

Guarde esta distinção: SELECT usa * para todas as colunas; DELETE não usa * porque exclui linhas inteiras. É exatamente nesse ponto que a questão se decide.

  1. 1DELETE FROM tabela
  2. 2WHERE condição
  3. 3Sem asterisco (*)
LEVEL · soulevel.com.br

Alternativa E — ❌ Errado ⟵ GABARITO

A instrução DELETE * FROM Enfermeiro WHERE ID = 121; está errada porque a sintaxe correta do comando DELETE não inclui o asterisco. A forma correta seria:

DELETE FROM Enfermeiro WHERE ID = 121;

O * é um curinga exclusivo do comando SELECT, onde SELECT * significa "selecione todas as colunas". No DELETE, a operação já remove a linha inteira, então o * é desnecessário e inválido. A banca explora exatamente essa confusão entre a sintaxe do SELECT e a do DELETE.

NÃO CAIA NESSA!

A banca troca a sintaxe do SELECT pela do DELETE. O candidato que memorizou SELECT * FROM ... pode aplicar o * automaticamente no DELETE, sem perceber que a sintaxe é diferente. Lembre-se: DELETE não usa * — ele exclui linhas inteiras, então não há necessidade de especificar colunas.

NÃO CAIA NESSA!

Na prova, ao ver um comando DELETE, verifique sempre se há um * após a palavra-chave. Se houver, a instrução está incorreta. A sintaxe correta é DELETE FROM tabela WHERE condição; — sem asterisco. Essa é uma pegadinha recorrente em questões de SQL.

Gabarito: letra E (ERRADO).

Link permanente: /questoes/qg347818