Qual é a diferença entre delete e truncate no sql?

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

  • Truncate é um comando DDL (linguagem de definição de dados): o que significa que o comando Truncate afeta a estrutura ou o esquema da cláusula tableNo where necessária: O comando Truncate não é usado com a cláusula where e remove todas as linhas de uma tabela. : No caso do comando Truncar, há um registro mínimo no log de transações, portanto, o comando Truncar é mais rápido quando comparado ao comando delete delete Permissão: para usar o comando truncar, você precisará da permissão Alter na sua tabela exibiçõesMenos espaço de transação: como há entradas mínimas no log de transações, o comando truncate usa menos espaço de transação do que o comando deleteRolling back: No servidor sql, você pode reverter o comando truncate se usar a transação no seu código.Sintaxe: TRUNCATE Table emp;

Comando Excluir no SQL

  • DELETE é um comando DML (linguagem de manipulação de dados): o que significa que o comando Excluir lida apenas com os dados e a manipulação de dados. Utilizando a cláusula where: quando queremos excluir uma linha específica usando o comando delete, usamos a cláusula where, na qual fornecemos uma condição, se uma linha atender somente a essa condição. esta deletado. Quando nenhuma cláusula where é usada, todas as linhas são excluídas.O comando mais lento que Truncate: Delete no SQL também mantém um log que resulta em uma execução mais lenta em comparação com o comando Truncate.Excluir linhas uma de cada vez: o comando Delete remove as linhas uma de cada vez time e registra uma entrada para as linhas excluídas no log de transações. Permissão de exclusão: Para usar o comando delete, você precisará de permissão de exclusão em sua tabela.Vistas anexadas: o comando Excluir também pode ser usado em exibições indexadas 'Jim';

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.