Questão de Banco de Dados — Consultas e Comandos em SQL — Quadrix 2024
- Código
- qa630746
- Banca
- Quadrix
- Órgão
- COREN PR
- Ano
- 2024
- Cargo
- Ana TI ( )
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: ERRADO (letra E). O comando apresentado está incorreto porque a sintaxe do DELETE não utiliza o asterisco (*) após a palavra-chave — a forma correta é DELETE FROM Enfermeiro WHERE ID = 121;. O * é um curinga usado no SELECT para indicar todas as colunas, mas no DELETE não há essa necessidade, pois o comando remove linhas inteiras, não colunas.
O comando DELETE é um dos comandos da sublinguagem DML (Data Manipulation Language) do SQL, responsável por excluir registros (linhas) de uma tabela. Sua sintaxe básica é:
DELETE FROM nome_da_tabela
WHERE condição;A cláusula WHERE é opcional, mas extremamente importante: sem ela, todos os registros da tabela seriam excluídos. No caso do enunciado, o objetivo é excluir apenas o enfermeiro com ID 121, então a cláusula WHERE ID = 121 está correta e cumpre exatamente esse papel de filtro.
O erro está no * logo após DELETE. Diferentemente do SELECT, onde SELECT * significa "todas as colunas", no DELETE não se especifica colunas — a exclusão é sempre de linhas completas. Portanto, o * é desnecessário e inválido na sintaxe padrão SQL. Alguns SGBDs podem até aceitar DELETE * por tolerância, mas não é a sintaxe correta e não deve ser usada.
Vale destacar que o comando DELETE pertence à DML, assim como SELECT, INSERT e UPDATE. A DML é uma das subdivisões do SQL, que também inclui DDL (CREATE, ALTER, DROP, TRUNCATE), DCL (GRANT, REVOKE, DENY) e DTL (COMMIT, ROLLBACK, SAVEPOINT). Saber a qual sublinguagem cada comando pertence é um conhecimento frequentemente cobrado em provas.
A pegadinha desta questão é justamente a presença do *, que pode passar despercebida para quem está acostumado a ver SELECT *. A banca explora a confusão entre a sintaxe do SELECT e a do DELETE. Guarde a regra: no DELETE, nunca use *; a sintaxe é DELETE FROM tabela WHERE condição.
O comando DELETE * FROM Enfermeiro WHERE ID = 121; está incorreto porque a sintaxe do DELETE não admite o asterisco. A forma correta é DELETE FROM Enfermeiro WHERE ID = 121;. O * é um curinga exclusivo do SELECT para indicar todas as colunas; no DELETE, a exclusão é de linhas inteiras, então não há o que selecionar. A cláusula WHERE ID = 121 está correta e garante que apenas o registro do enfermeiro com ID 121 seja removido, mas o comando como um todo é inválido.
Para não errar mais, lembre-se: SELECT usa * para todas as colunas; DELETE não usa *, pois remove linhas inteiras. A sintaxe é sempre DELETE FROM tabela [WHERE condição]. Se a questão trouxer DELETE *, marque errado sem hesitar.
Gabarito: letra E (ERRADO).
Link permanente: /questoes/qa630746