Diferença entre Delete e Truncate

Anonim

Delete vs Truncate

Ambos os comandos SQL (Structure Query Language), Delete e Truncate são usados ​​para eliminar os dados armazenados em tabelas em um banco de dados. Eliminar é uma declaração DML (Data Manipulation Language) e remove algumas ou todas as linhas de uma tabela. A "cláusula Where" é usada para especificar as linhas que são necessárias para serem excluídas e, se a cláusula Where não for usada com a declaração Delete, ela remove todos os dados na tabela. Truncate é uma declaração DDL (Data Definition Language), e remove dados inteiros da tabela. Ambos os comandos não destroem a estrutura da tabela e as referências à tabela, e somente os dados são removidos conforme necessário.

Excluir declaração

A declaração de exclusão permite ao usuário remover dados de uma tabela existente em um banco de dados com base em uma condição especificada e a "cláusula Where" é usada para determinar esta condição. O comando Eliminar é referido como uma execução registrada, porque ele exclui apenas uma linha por vez e mantém uma entrada para cada exclusão de linha no log de transações. Então, isso faz com que a operação seja mais lenta. Eliminar é uma declaração DML e, portanto, não é comprometida automaticamente ao executar o comando. Portanto, a operação de exclusão pode ser revertida para acessar os dados novamente, se necessário. Após a execução do comando Delete, ele deve ser comprometido ou revertido para salvar as alterações permanentemente. A declaração de exclusão não remove a estrutura da tabela da tabela do banco de dados. Também não desaloca o espaço de memória usado pela tabela.

A sintaxe típica para o comando Delete é indicada abaixo.

DELETE FROM

ou

DELETE FROM WHERE

Truncate Statement

A instrução Truncate remove todos os dados de uma tabela existente em um banco de dados, mas preserva a mesma estrutura de tabela, também as restrições de integridade, privilégios de acesso e as relações com outras tabelas. Portanto, não é necessário definir a tabela novamente, e a estrutura da tabela antiga pode ser usada, se o usuário quiser reutilizar a tabela novamente. Truncar remove dados inteiros desalocando as páginas de dados usadas para manter os dados, e apenas essas desalocações de páginas são mantidas no registro de transações. Portanto, o comando truncar utiliza apenas um menor sistema e recursos de log de transações para operação, por isso é mais rápido do que outros comandos relacionados. Truncate é um comando DDL, portanto, ele usa compromissos automáticos antes e depois da execução da declaração. Portanto, truncar não pode reverter novamente os dados de qualquer maneira. Libera espaço de memória usado pela tabela após a execução. Mas a instrução Truncate não pode ser aplicada nas tabelas referenciadas por restrições de chaves estrangeiras.

A seguir está a sintaxe comum para a instrução Truncate.

TRUNCATE TABLE

Qual a diferença entre Delete e Truncate?

1. Excluir e truncar comandos remover dados de tabelas existentes em um banco de dados sem prejudicar a estrutura da tabela ou outras referências à tabela.

2. No entanto, o comando Excluir pode ser usado para excluir linhas específicas somente em uma tabela usando uma condição relevante ou para excluir todas as linhas sem qualquer condição, enquanto o comando Truncate pode ser usado somente para excluir dados inteiros na tabela.

3. Delete é um comando DML e pode reverter a operação, se necessário, mas Truncate é um comando DDL, por isso é uma declaração de confirmação automática e não pode ser revertida de qualquer maneira. Portanto, é importante usar esse comando com cuidado no gerenciamento de banco de dados.

4. A operação Truncate consome menos recursos do sistema e log de transações do que a operação Delete, portanto, Truncate é considerado mais rápido do que Delete.

5. Além disso, Delete não desaloca o espaço usado pela tabela, enquanto Truncate libera o espaço usado após a execução, portanto, Delete não é eficiente no caso de excluir todos os dados de uma tabela de banco de dados.

6. No entanto, Truncate não é permitido usar quando a tabela é referenciada por uma restrição de chave estrangeira e, nesse caso, o comando Excluir pode ser usado em vez de Truncar.

7. Finalmente, ambos os comandos têm vantagens e também desvantagens ao aplicá-los nos Sistemas de Gerenciamento de Banco de Dados e o usuário deve estar ciente de usar esses comandos adequadamente para obter bons resultados.