Truncar e Excluir no SQL são dois comandos usados para excluir ou remover linhas de uma tabela, mas não são exatamente semelhantes na maneira como operam.
A diferença entre os comandos Excluir e Truncar é o conceito mais básico do SQL, mas confunde muitas pessoas. Talvez seja por isso que também seja uma das perguntas mais frequentes da entrevista.
Para responder a essa pergunta, examinarei os dois comandos individualmente para que a diferença seja clara.
Truncar comando no SQL
Comando Excluir no SQL
Quando usar o comando Truncar
Quando você deseja redefinir completamente a tabela, incluindo todas as teclas. Ou quando você precisar limpar rapidamente a tabela, caso esteja trabalhando com dados de teste.
Nota: O comando Truncar bloqueia a tabela, portanto, não é recomendável usá-lo se a tabela estiver sendo compartilhada entre vários usuários.
Quando usar o comando delete
É recomendável usar o comando delete em qualquer situação, exceto quando for absolutamente necessário truncar. Além disso, quando o comando delete é usado em uma linha específica, ele bloqueia essa linha e as linhas restantes permanecem desbloqueadas.
Consulte o vídeo a seguir para saber mais sobre o comando Excluir vs Truncar no SQL com base em uma demonstração prática.
Eu espero que isso ajude!
Em muitas implementações de mecanismo de banco de dados, TRUNCATE [TABLE] é uma rápida “limpeza e restauração de tabela” e geralmente ignora os limites de transação. DELETE sem WHERE (que também excluiria todos os registros) * obedece às transações e as linhas reaparecerão se a transação for recuperada por ROLLBACK ou recuperada.
TRUNCATE é útil para tabelas de trabalho e outras tabelas em que você precisa apagar rapidamente o conteúdo da tabela e não precisa se preocupar com a capacidade de recuperação. DELETE sem WHERE é bom para exclusões em massa que talvez precisem ser recuperadas por algum motivo.
Se o mecanismo db implementar TRUNCATE e DELETE dessa maneira, TRUNCATE normalmente será muito mais rápido que DELETE.
Esta resposta é específica para o Oracle RDBMS.
Todas as respostas aqui abrangem a parte essencial das diferenças DDL (Truncar) e DML (Excluir).
Além de limpar o conteúdo da tabela, a instrução truncada também restaura a marca d'água alta e a marca d'água baixa da tabela. Essas são marcas (ponteiros na natureza) desempenham um papel importante quando se trata da velocidade de consultar a tabela. Para sistemas de produção de alta carga, é importante restaurar as marcas de água frequentemente para obter um desempenho rápido.
Você pode ler sobre o funcionamento das marcas d'água na Documentação Oracle, pois o uso e a implementação delas estão fora do escopo desta pergunta.