Pular para o conteúdo principal

Questão de Banco de Dados — SQL Server — FCC 2017

Banco de DadosSQL Server
Código
fc035591
Banca
FCC
Órgão
ARTESP
Ano
2017
Nível
Médio
Cargo
Agente de Fiscalização à Regulação de Transporte - Tecnologia de Informação
Em relação à remoção de linhas no SQL Server, é correto afirmar:
  1. AUma tabela que tenha todas as linhas removidas permanece no banco de dados. A instrução DELETE só exclui linhas da tabela; a tabela deve ser removida do banco de dados usando a instrução DROP TABLE.
  2. BAo utilizar uma instrução DELETE, se a cláusula WHERE não for especificada, apenas a primeira linha da tabela será excluída.
  3. CDiferentemente da instrução DELETE, uma tabela esvaziada usando a instrução TRUNCATE TABLE é removida do banco de dados, junto com seus índices e outros objetos associados.
  4. DPode-se usar a cláusula UP (n) para limitar o número de linhas que são excluídas em uma instrução DELETE. Neste caso a operação de exclusão é executada em uma seleção aleatória de n linhas.
  5. ECaso seja utilizada a cláusula UP junto com TRUNCATE para excluir linhas em uma determinada ordem, será preciso usar UP junto com ORDER BY em uma instrução de subseleção.
Revelar gabarito e comentário

GabaritoA — Uma tabela que tenha todas as linhas removidas permanece no banco de dados. A instrução DELETE só exclui linhas da tabela; a tabela deve ser removida do banco de dados usando a instrução DROP 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”.

Remoção de linhas no SQL Server: DELETE, TRUNCATE e DROP

Gabarito: letra A. A instrução DELETE remove apenas as linhas da tabela, mantendo sua estrutura; a tabela só é removida do banco de dados com o comando DROP TABLE. Essa distinção é fundamental e é o que a alternativa A afirma corretamente.

A banca testa o conhecimento dos comandos de exclusão de dados e objetos no SQL Server. Enquanto DELETE e TRUNCATE operam sobre os dados (linhas), DROP TABLE remove a própria tabela (incluindo sua estrutura e dados).

1DELETE
Remove linhas (dados)
Tabela permanece (estrutura)
Sem WHERE → todas as linhas
Limite: TOP (n)
2TRUNCATE TABLE
Remove linhas (dados)
Tabela permanece (estrutura)
Índices preservados
3DROP TABLE
Remove tabela (estrutura + dados)
Remove índices e objetos associados
Remoção de linhas (SQL Server)
LEVELsoulevel.com.br
Remoção de linhas (SQL Server): DELETE (Remove linhas (dados), Tabela permanece (estrutura), Sem WHERE → todas as linhas, Limite: TOP (n)); TRUNCATE TABLE (Remove linhas (dados), Tabela permanece (estrutura), Índices preservados); DROP TABLE (Remove tabela (estrutura + dados), Remove índices e objetos associados)

Alternativa A — ✅ Correta ⟜ GABARITO

A afirmação está correta. O comando DELETE, mesmo quando remove todas as linhas, não apaga a tabela. A tabela permanece no banco de dados, vazia, pronta para receber novos dados. Para eliminar definitivamente a tabela (estrutura e dados), utiliza-se o comando DROP TABLE. Essa é a diferença clássica entre exclusão de dados e exclusão de objeto.

Material de apoio: "A instrução DROP TABLE é usada para deletar uma tabela existente... Essa instrução irá deletar todos os dados da tabela, bem como a própria tabela. Contudo, você pode desejar excluir apenas os dados da tabela, sem excluir a estrutura dessa tabela. Para isso, poderá usar o comando TRUNCATE: TRUNCATE TABLE nome_da_tabela;"

Alternativa B — ❌ Incorreta

Afirma que, sem a cláusula WHERE, o DELETE exclui apenas a primeira linha. Isso é falso. No SQL Server, o comando DELETE sem WHERE remove todas as linhas da tabela. Para excluir apenas a primeira linha (ou um número limitado), deve-se usar a cláusula TOP (ex.: DELETE TOP (1) FROM tabela). O erro é grave: inverter o comportamento padrão do comando.

Alternativa C — ❌ Incorreta

Diz que o TRUNCATE TABLE remove a tabela do banco de dados, junto com índices e objetos associados. Isso é incorreto. O comando TRUNCATE TABLE esvazia a tabela (remove todas as linhas), mas preserva a estrutura da tabela e seus índices. Quem remove a tabela (incluindo estrutura e índices) é o DROP TABLE. A confusão entre TRUNCATE e DROP é clássica.

Alternativa D — ❌ Incorreta

Menciona uma cláusula UP (n) para limitar o número de linhas excluídas. Essa cláusula não existe no SQL Server. O correto é usar TOP (n) em conjunto com DELETE, como em DELETE TOP (10) FROM tabela. Além disso, a afirmação de que a exclusão é "aleatória" não é precisa: sem ORDER BY, a seleção das linhas é não determinística, mas o SQL Server geralmente escolhe com base no plano de execução. De qualquer forma, o comando citado (UP) é inválido.

Alternativa E — ❌ Incorreta

Sugere usar a cláusula UP junto com TRUNCATE e ORDER BY em subseleção. TRUNCATE não aceita cláusulas TOP, ORDER BY nem qualquer filtro; ele remove todas as linhas de uma vez, sem possibilidade de ordenação ou limitação. A combinação descrita não existe na sintaxe do SQL Server. Se for necessário excluir linhas em ordem ou limitar, usa-se DELETE com TOP e ORDER BY.

PEGA ESSA DICA!

Decore o papel de cada comando:

  • DELETE: remove linhas (pode ser filtrado com WHERE/TOP); mantém a tabela.

  • TRUNCATE: remove todas as linhas de uma tabela de forma rápida (não registra cada exclusão); mantém a estrutura.

  • DROP TABLE: remove a tabela inteira (dados + estrutura + índices).

Nunca confunda TRUNCATE com DROP: TRUNCATE esvazia, DROP apaga.

Gabarito: letra A

Link permanente: /questoes/fc035591