Questão nº 62
Questão de Tecnologia da Informação · FGV TJ-SE Servidor 2023 (nº 62)
Alison utilizou o seguinte comando SQL para inserir registros em uma tabela.
INSERT INTO TB_A (COL_1, COL_2)
SELECT COL_X, COL_Y
FROM TAB_B;
Após a execução do comando, Alison percebeu que a tabela origem dos dados estava errada, deveria ser TB_C. Para apagar os registros da tabela TB_A mantendo sua estrutura, Alison deve executar o comando:
- ADROP TABLE TB_A;
- BALTER TABLE TB_A ADD COL_Y INT, COL_Y INT;
- CDELETE FROM TABLE TB_A WHERE COL_X = COL_Y;
- DUPDATE TB_A SET 1=1;
- ETRUNCATE TABLE TB_A. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Para apagar todos os registros de uma tabela, mas mantendo sua estrutura (colunas, tipos de dados, restrições), o comando mais adequado e eficiente é o TRUNCATE TABLE. Ele remove rapidamente todas as linhas, liberando o espaço de armazenamento.
- (A) Incorreta: O comando
DROP TABLE TB_A;remove a tabela inteira, incluindo sua estrutura e todos os dados, o que não atende ao requisito de "mantendo sua estrutura". - (B) Incorreta: O comando
ALTER TABLE TB_A ADD COL_Y INT, COL_Y INT;é usado para modificar a estrutura da tabela (adicionar, remover ou alterar colunas), e não para apagar registros. Além disso, tentar adicionar duas colunas com o mesmo nome (COL_Y) causaria um erro. - (C) Incorreta: O comando
DELETE FROM TABLE TB_A WHERE COL_X = COL_Y;remove registros, mas a cláusulaWHEREespecifica que apenas os registros ondeCOL_Xé igual aCOL_Yseriam apagados. Para apagar todos os registros comDELETE FROM, a cláusulaWHEREdeveria ser omitida (DELETE FROM TB_A;). Mesmo assim,TRUNCATE TABLEé geralmente mais rápido e eficiente para essa finalidade. Armadilha da banca: Esta alternativa é tentadora porqueDELETE FROMé usado para apagar registros. No entanto, a condiçãoWHERE COL_X = COL_Yimpede que todos os registros sejam apagados, e o objetivo é apagar todos. - (D) Incorreta: O comando
UPDATE TB_A SET 1=1;é usado para modificar dados existentes em uma tabela, não para apagar registros. A sintaxeSET 1=1é inválida para atualização de colunas e não teria efeito de exclusão. - (E) Correta: O comando
TRUNCATE TABLE TB_A;remove de forma rápida e eficiente todos os registros da tabelaTB_A, mas mantém sua estrutura (colunas, índices, restrições) intacta, exatamente como solicitado na questão.
Fonte: FGV TJ-SE Servidor 2023 Técnico Judiciário - Programação de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.