Diferença entre excluir e truncar no servidor sql

Apenas duas pequenas adições à resposta Stuti de RedbushTechnologies.com

O trucado pode ser revertido na mesma sessão. por exemplo

Begin tran

TRUNCATE TABLE Funcionários

ROLLBACK

As instruções acima deixarão todos os dados na tabela como estão.

Se a sessão estiver fechada e o banco de dados estiver no modo de recuperação completa, podemos reverter o DELETE, mas TRUNCATE não pode ser revertido.

TRUNCATE redefine o valor da identidade para o valor original da tabela.Whereas Delete não redefine o valor da identidade.

Truncar

  1. É uma operação DDL (linguagem de definição de dados).
  2. A restauração de dados não é possível.
  3. Não é possível excluir linha específica.
  4. Libere memória.
  5. Exclua todas as linhas sem ler o registro.
  6. O gatilho não pode ser criado em truncado.
  7. É usado pelo DBA.
  8. É mais rápido que o comando delete.
  9. Exclui dados apenas não a definição de dados.

Excluir

  1. É uma operação DML (linguagem de manipulação de dados).
  2. Exclui todas as linhas e linhas específicas também.
  3. A restauração de dados é possível.
  4. Não libera memória.
  5. O gatilho pode ser criado ao excluir.
  6. É usado pelo desenvolvedor.
  7. Excluir linha por linha.

Truncar é DDL, quando a consulta "TRUNCATE TABLE table_name" for acionada, todos os registros da tabela serão excluídos.

Em termos gerais, o comando acima redefinirá a tabela, apenas a estrutura da tabela estará lá, o comando acima não poderá ser revertido (Você não pode desfazer este comando).

O comando Delete é DML, este comando lidará com os registros da tabela, independentemente da estrutura, você pode excluir um único registro ou vários e até todos os registros.

"EXCLUIR do nome_tabela onde CONDITION ..."

O comando acima pode ser revertido (pode desfazer o comando).

Se você deseja excluir rapidamente todas as linhas de uma tabela e não possui chaves estrangeiras nas tabelas, um TRUNCATE provavelmente será mais rápido que um DELETE.

  • Truncar é um comando DDL (Data Definition Language).
  • Excluir é um comando DML (Data Manipulation Language).
  • Você não pode reverter após executar Truncar.
  • Você pode reverter após excluir.
  • Truncar bloqueia a tabela inteira.
  • Excluir bloqueia a linha da tabela.
  • Você não pode usar a cláusula WHERE com Truncate.
  • Você pode usar WHERE para filtrar os dados a serem excluídos.

Para mais informações, você também pode ter a ajuda deste link:

Truncar, excluir e soltar instruções no SQL Server

Truncar é uma operação DDL, ou seja, nenhum log é gerado depois que você trunca a tabela. Portanto, todos os seus dados desaparecem assim que o truncado é executado. Pelo contrário, o Delete irá gerar os logs que podem ser usados ​​para reverter a transação, no nível de desempenho, o apagamento é lento e o truncado é muito rápido. Também no servidor SQL, o truncado redefinirá os valores da coluna de identidade. Vamos ver como o truncado funciona. Suponha que eu tenha uma tabela muito grande, que abranja milhares de páginas no sistema de arquivos subjacente. Há também um conceito de marca d'água alta para todas as tabelas, o SQL Server mantém esses registros que são úteis para inserir os novos registros acima da marca d'água alta. Portanto, durante o truncado, o servidor SQL apenas define a marca d'água alta para a primeira página sem se preocupar em ir para cada página e excluir os registros, por isso é muito rápido.

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

  • Truncar é um comando DDL (linguagem de definição de dados): o que significa que o comando Truncar afeta a estrutura ou o esquema da tabela
  • Não é necessária a cláusula where: o comando Truncate não é usado com a cláusula where e remove todas as linhas de uma tabela.
  • Comando mais rápido que excluir: o comando Truncar não mantém o log de transações em detalhes. Como há um registro mínimo no log de transações, o comando Truncar é mais rápido quando comparado ao comando delete
  • Alterar permissão: para usar o comando truncar, você precisará da permissão Alterar na sua tabela
  • Exibições indexadas: o comando Truncar não pode ser usado com visualizações indexadas
  • Menos 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 delete
  • Reversão: no servidor sql, você pode reverter o comando truncar se usar transações 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 a manipulação de dados e dados. Não tem impacto sobre o esquema de uma tabela.
  • Uso da 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 e ela será excluída. Quando nenhuma cláusula where é usada, todas as linhas são excluídas.
  • Mais lento que truncar: o comando Excluir no SQL também mantém um log que resulta em execução mais lenta em comparação com o comando Truncar.
  • Excluindo linhas uma por vez: O comando Excluir remove as linhas uma por vez e registra uma entrada para as linhas excluídas no log de transações.
  • Permissão de exclusão: Para usar o comando de exclusão, você precisará de permissão de exclusão em sua tabela.
  • Visualizações indexadas: o comando Excluir também pode ser usado em visualizações indexadas
  • Sintaxe:
  • DELETE FROM emp WHERE firstName = '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!

DELETE 1. DELETE é um comando DML. 2. A instrução DELETE é executada usando um bloqueio de linha, cada linha da tabela é bloqueada para exclusão. 3. Podemos especificar filtros na cláusula where 4. Exclui dados especificados se houver condição. 5. Excluir ativa um gatilho porque a operação é registrada individualmente. 6. Mais lento que truncado porque mantém registros. 7. A reversão é possível.

TRUNCATE 1. TRUNCATE é um comando DDL. 2. TRUNCATE TABLE sempre bloqueia a tabela e a página, mas não cada linha. 3. Não pode usar Where Condition. 4. Remove todos os dados. 5. TRUNCATE TABLE não pode ativar um acionador porque a operação não registra exclusões de linhas individuais. 6. Mais rápido em termos de desempenho, porque não mantém nenhum registro. 7. A reversão não é possível.

Diferença entre excluir e truncar