Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — FCC 2024

Banco de DadosConsultas e Comandos em SQL
Código
fc147209
Banca
FCC
Órgão
Pref J Guararapes
Ano
2024
Cargo
AGR ( )
Utilizando SQL ANSI em um banco de dados aberto e em condições ideais, para excluir da tabela "cidadao” o cidadão que possui no conteúdo do campo CPF o valor fictício 158.234.089.12 utiliza-se o comando
  1. ASELECT * FROM cidadao AND DELETE CPF = '158.234.089.12';
  2. BDELETE * FROM cidadao WHERE CPF = '158.234.089.12';
  3. CERASE FROM cidadao WHERE CPF = '158.234.089.12';
  4. DDELETE FROM cidadao WHERE CPF = '158.234.089.12';
  5. EERASE * FROM cidadao WHERE CPF = '158,234.089,12';
Revelar gabarito e comentário

GabaritoD — DELETE FROM cidadao WHERE CPF = '158.234.089.12';

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: comando DELETE

Gabarito: letra D. Para excluir um registro específico de uma tabela em SQL ANSI, a sintaxe correta é DELETE FROM nome_da_tabela WHERE condição; — sem o asterisco (*), que é usado apenas no SELECT. A alternativa D reproduz exatamente essa estrutura, filtrando pela coluna CPF com o valor fictício entre aspas simples.

O comando DELETE é a instrução da sublinguagem DML (Data Manipulation Language) responsável por remover linhas (registros) de uma tabela. Sua sintaxe básica é:

DELETE FROM nome_da_tabela
WHERE condição;

A cláusula WHERE é opcional, mas essencial quando se deseja excluir apenas registros específicos. Sem ela, o comando apagaria todas as linhas da tabela — um erro grave em produção. No enunciado, a condição é CPF = '158.234.089.12', que identifica unicamente o cidadão a ser removido.

É importante distinguir o DELETE de outros comandos de remoção:

Comando

O que remove

Estrutura

Sublinguagem

DELETE

Linhas específicas (com WHERE) ou todas as linhas (sem WHERE)

DELETE FROM tabela WHERE condição;

DML

TRUNCATE

Todas as linhas, de forma rápida, sem registrar cada exclusão

TRUNCATE TABLE tabela;

DDL

DROP

A tabela inteira (estrutura e dados)

DROP TABLE tabela;

DDL

A pegadinha da banca está em dois pontos: (1) o uso do asterisco após DELETE, que é inválido — o * só aparece no SELECT para indicar "todas as colunas"; e (2) a invenção do comando ERASE, que não existe no SQL padrão. O candidato que decora a sintaxe do SELECT * FROM pode transferir o * erroneamente para o DELETE, caindo na alternativa B.

Guarde a regra de ouro: DELETE não usa * — a remoção é sempre de linhas inteiras, não de colunas. É exatamente esse detalhe que separa a alternativa correta das demais.

Alternativa A — ❌ Incorreta

Mistura dois comandos incompatíveis: SELECT * FROM cidadao AND DELETE CPF = .... Não existe essa sintaxe no SQL — o SELECT é para consulta e o DELETE é para exclusão, mas não podem ser combinados dessa forma, e a cláusula AND não conecta comandos. Além disso, falta o WHERE para filtrar a condição.

Alternativa B — ❌ Incorreta

O erro está no DELETE * FROM. O asterisco é um curinga exclusivo do SELECT (para indicar "todas as colunas"). No DELETE, a sintaxe correta é apenas DELETE FROM tabela WHERE condição; — sem o *. A condição WHERE CPF = '158.234.089.12' está correta, mas a estrutura geral invalida o comando.

Alternativa C — ❌ Incorreta

ERASE não é um comando SQL. O SQL padrão (ANSI) define DELETE como a instrução de exclusão de registros. ERASE é um termo de outras linguagens ou sistemas, mas não faz parte do vocabulário SQL. A estrutura ERASE FROM cidadao WHERE ... é sintaticamente inválida.

Alternativa D — ✅ Correta ⟵ GABARITO

Reproduz exatamente a sintaxe correta do comando de exclusão: DELETE FROM cidadao WHERE CPF = '158.234.089.12';. O DELETE FROM indica a tabela-alvo, o WHERE filtra a linha específica pelo valor do campo CPF, e o valor é corretamente delimitado por aspas simples por se tratar de uma string. Este comando remove apenas o registro do cidadão com o CPF fictício informado.

Alternativa E — ❌ Incorreta

Apresenta dois erros: (1) ERASE não é um comando SQL válido — o correto é DELETE; e (2) o valor do CPF está com vírgulas ('158,234.089,12') em vez de pontos ('158.234.089.12'). No SQL, o separador decimal de strings é sempre o ponto, e o valor deve ser idêntico ao armazenado no banco para que a comparação funcione. A vírgula tornaria a condição falsa, e nenhuma linha seria excluída.

NÃO CAIA NESSA!

A banca explora a transferência indevida do * do SELECT para o DELETE (alternativa B) e a invenção do comando ERASE (alternativas C e E). No SQL, o * só existe no SELECT; no DELETE, a remoção é sempre de linhas inteiras, então o asterisco é desnecessário e inválido. Além disso, ERASE não pertence ao vocabulário SQL — o único comando de exclusão de registros é o DELETE. Fique atento a esses dois detalhes: eles são os distratores clássicos dessa questão.

PEGA ESSA DICA!

Para memorizar a sintaxe, compare com o SELECT: enquanto o SELECT pode projetar colunas específicas (ou todas com *), o DELETE sempre remove linhas completas — por isso não há *. Decore a estrutura mínima: DELETE FROM tabela WHERE condição;. E lembre-se: TRUNCATE remove tudo (DDL), DROP remove a tabela (DDL), e DELETE remove linhas selecionadas (DML).

Gabarito: letra D

Link permanente: /questoes/fc147209