Pular para o conteúdo principal

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

Banco de DadosConsultas e Comandos em SQL
Código
fg165236
Banca
FGV
Órgão
TJ MS
Ano
2024
Cargo
Tec NS ( )
O analista Júnior está realizando cargas na tabela TAB_CADASTRO a partir do arquivo cadastro.csv. Após realizar a primeira carga, ele verificou que os dados foram carregados com diversos erros.   Para apagar os dados da tabela, mantendo a sua estrutura, Júnior deve executar o comando:
  1. ASET TABLE
  2. BALTER TABLE
  3. CDROP TABLE
  4. DDELETE TABLE
  5. ETRUNCATE TABLE
Revelar gabarito e comentário

GabaritoE — TRUNCATE TABLE

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

Comandos SQL: TRUNCATE TABLE e a remoção de dados

Gabarito: letra E — o comando TRUNCATE TABLE apaga todos os dados de uma tabela, mantendo a sua estrutura (colunas, índices, constraints). É a ferramenta certa para o analista que quer limpar a tabela TAB_CADASTRO após uma carga com erros, sem perder a definição da tabela. As demais alternativas ou não existem (SET TABLE, DELETE TABLE) ou têm outra finalidade (ALTER TABLE altera a estrutura, DROP TABLE remove a tabela inteira).

O comando TRUNCATE TABLE pertence à sublinguagem DDL (Data Definition Language), assim como CREATE, ALTER e DROP. Ele remove todas as linhas de uma tabela de uma só vez, de forma rápida e sem registrar cada exclusão individualmente no log de transações (em muitos SGBDs). Por isso, é a opção ideal quando se deseja esvaziar completamente uma tabela, mantendo sua estrutura para uma nova carga.

A diferença crucial está entre TRUNCATE e DELETE. O DELETE é um comando da DML (Data Manipulation Language) e permite excluir linhas específicas com a cláusula WHERE, além de disparar triggers e registrar cada exclusão no log. O TRUNCATE não aceita WHERE, não dispara triggers (na maioria dos bancos) e é mais rápido, mas não pode ser desfeito com ROLLBACK em alguns SGBDs (como o MySQL) — embora no PostgreSQL e SQL Server seja possível reverter dentro de uma transação.

Vejamos um exemplo prático: se o analista executasse DELETE FROM TAB_CADASTRO; sem WHERE, apagaria todas as linhas, mas o comando seria registrado linha a linha, o que é mais lento e pode ser revertido. Já TRUNCATE TABLE TAB_CADASTRO; remove tudo de forma atômica e rápida, mas não permite filtrar — exatamente o que o enunciado pede: apagar os dados mantendo a estrutura.

A pegadinha da banca está em confundir TRUNCATE com DROP. O DROP TABLE remove a tabela inteira, incluindo sua estrutura, dados, índices e privilégios — o oposto do que se deseja. Já o ALTER TABLE serve para modificar a estrutura (adicionar/remover colunas, alterar tipos), não para apagar dados. E SET TABLE e DELETE TABLE simplesmente não existem na sintaxe SQL padrão.

Guarde a fronteira: TRUNCATE = apaga dados, mantém estrutura; DROP = apaga tudo; DELETE = apaga linhas específicas (ou todas, com WHERE). É nessa distinção que as alternativas se separam.

Comandos SQL
  • 1DDL (estrutura)
    • TRUNCATE TABLE
      • apaga dados
      • mantém estrutura
    • DROP TABLE
      • apaga dados e estrutura
    • ALTER TABLE
      • modifica estrutura
  • 2DML (dados)
    • DELETE FROM
      • apaga linhas específicas
      • aceita WHERE
      • registra no log
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

SET TABLE não é um comando SQL válido. O SET é usado em UPDATE (para atribuir valores) ou em comandos de configuração de sessão, mas não existe SET TABLE para apagar dados. O candidato pode confundir com SET do UPDATE, mas aqui não há essa função.

Alternativa B — ❌ Incorreta

ALTER TABLE é usado para modificar a estrutura da tabela: adicionar, excluir ou alterar colunas, e adicionar/remover restrições. Não apaga dados. Se o analista quisesse, por exemplo, adicionar uma coluna, usaria ALTER TABLE TAB_CADASTRO ADD .... Para apagar dados, não serve.

Alternativa C — ❌ Incorreta

DROP TABLE remove a tabela inteira, incluindo sua estrutura, dados, índices e privilégios. O enunciado pede para apagar apenas os dados, mantendo a estrutura — portanto, DROP é exatamente o oposto do que se deseja. É a pegadinha clássica: quem confunde TRUNCATE com DROP erra esta questão.

Alternativa D — ❌ Incorreta

DELETE TABLE não é uma sintaxe válida. O comando correto para excluir linhas é DELETE FROM nome_da_tabela [WHERE condição]. A ausência do FROM torna o comando inválido. Além disso, mesmo que fosse DELETE FROM, ele apagaria as linhas, mas de forma diferente do TRUNCATE (mais lento, com log, e permitindo WHERE).

Alternativa E — ✅ Correta ⟵ GABARITO

TRUNCATE TABLE é o comando da DDL que remove todas as linhas de uma tabela, mantendo sua estrutura (colunas, índices, constraints). É exatamente o que o analista precisa: apagar os dados carregados com erros, sem destruir a tabela, para poder refazer a carga. A sintaxe é TRUNCATE TABLE TAB_CADASTRO;.

NÃO CAIA NESSA!

Para não confundir na prova, lembre-se da tríade: TRUNCATE (apaga dados, mantém estrutura), DROP (apaga tudo), DELETE (apaga linhas específicas). Se a questão pedir "apagar todos os dados mantendo a estrutura", a resposta é sempre TRUNCATE. Se pedir "apagar a tabela inteira", é DROP. Se pedir "apagar registros específicos", é DELETE FROM ... WHERE.

Gabarito: letra E

Link permanente: /questoes/fg165236