DELETE e TRUNCATE são comandos ambos utilizados para remover tuplas de uma relação, mas são diferentes em muitos aspectos. O ponto central que nos permite diferenciar entre DELETE e TRUNCATE é que DELETE é capaz de remover tuplas específicas de uma relação, enquanto TRUNCATE remove todas as tuplas/linhas de uma relação/tabela.

Veja outras diferenças na tabela abaixo: 

Tópico de comparação  DELETE TRUNCATE
Básico  Você pode especificar as tuplas que quer deletar  Remove todas as tuplas da relação 
Linguagem É um comando DML (Data Manipulation Language)  É um comando DDL (Data Definition Language) 
Cláusula Where  Pode ter a cláusula where  Não pode utilizar where 
Deleção  Remove as tuplas uma a uma  Exclui todas as tuplas de uma relação 
lock  Usa lock antes de excluir a tupla  Usa lock antes de deletar uma data page 
Velocidade  Mais lento em relação ao truncate  Mais rápido em ralação ao delete 
Restauração  Pode ser seguido de commit e rollback  Não pode usar rollback após a exclusão 

Quando usar o DELETE? 

Delete é um comando DML (Data Manipulation Language). O comando DELETE é utilizado para remover registros de uma tabela. Em uma forma mais simples, você pode remover todas as linhas de uma tabela/relação ou adicionar a cláusula WHERE para remover apenas as linhas/tuplas que atendem aos critérios especificados. 

Quando o comando DELETE é executado o DBSM registrará todas as linhas removidas. Devido a isso o processo de restauração se torna mais fácil, em relação ao TRUNCATE. Para isso você pode redefinir o banco de dados usando o comando ROLLBACK. 

O comando delete bloqueia a linha a ser excluída, e em seguida, excluí uma a uma. Por exigir muitos bloqueios, torna a execução mais lenta. 

Veja a sintaxe do comando delete: 

DELETE FROM table_name WHERE [conditon] ; 

O comando:

DELETE FROM employee; 

… irá remover todos os funcionários da tabela employee. Enquanto que o comando:

DELETE FROM employee 
        WHERE firstName = ‘Maria’;

… irá excluir todos os funcionários que o primeiro nome seja Maria.

Quando utilizar o truncate?

TRUNCATE é um comando DDL (Data Definition Language). É semelhante ao DELETE, pois exclui linhas/tuplas de uma relação. A diferença é que o TRUNCATE exclui todas as linhas/tuplas de uma tabela/relação. A estrutura da tabela ainda é mantida no banco de dados. A primary key é redefinida para seu valor inicial. 

Ao usar TRUNCATE, menos informações serão registradas. TRUNCATE opera sobre data pages, entao ele bloqueia os data pages em vez das tuplas. Isso significa que menos bloqueios são necessários e a execução se torna mais rápida. No entanto, ele não registra cada linha excluída. Observação: em alguns bancos de dados é possível reverter o comando TRUNCATE usando códigos avançados.  

Veja a sintaxe do comando TRUNCATE: 

TRUNCATE TABLE table_name;

O comando:

TRUNCATE TABLE employee;

irá remover todas as linhas da tabela employee. 

Use TRUNCATE quando você quiser redefinir a tabela para seu estado vazio ou quando precisar limpar os dados da tabela de forma rápida.   

TRUNCATE bloqueia a tabela, então, não use o comando em uma tabela compartilhada por muitos usuários simultâneos. 

Conclusão

Use DELETE para personalizar a exclusão de registros de uma tabela. Use truncate quando quiser esvaziar a tabela; 

DEIXE UMA RESPOSTA

Por favor, digite seu comentário!
Por favor, entre com seu nome aqui