EXCLUIR
- DELETE é um comando DML.
- A instrução DELETE é executada usando um bloqueio de linha, cada linha na tabela é bloqueada para exclusão.
- Podemos especificar filtros na cláusula where
- Ele exclui dados especificados se houver condição.
- Excluir ativa um acionador porque a operação é registrada individualmente.
- Mais lento que truncar porque mantém registros.
- É possível reverter.
TRUNCAR
- TRUNCATE é um comando DDL.
- TRUNCATE TABLE sempre bloqueia a tabela e a página, mas não cada linha.
- Não é possível usar a condição Where.
- Remove todos os dados.
- TRUNCATE TABLE não pode ativar um gatilho porque a operação não registra exclusões de linhas individuais.
- Mais rápido em termos de desempenho, porque não mantém nenhum registro.
- É possível reverter.
- DELETE e TRUNCATE podem ser revertidos quando usados comTRANSACTION (TRUNCATE pode ser revertido no SQL Server, mas não no MySQL).
- se houver um PK com incremento automático, truncar irá redefinir o contador
http://beginner-sql-tutorial.com/sql-delete-statement .htm