Excluir vs Truncar
Ambos os comandos SQL (Structure Query Language), Delete e Truncate são usados para se livrar de dados armazenados em tabelas em um banco de dados. Delete é uma instruçã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 devem ser excluídas e, se a cláusula Where não for usada com a instrução Delete, ela removerá todos os dados da tabela. Truncar é uma instrução DDL (linguagem de definição de dados) e remove dados inteiros da tabela. Ambos os comandos não destroem a estrutura da tabela e as referências à tabela, e apenas os dados são removidos conforme necessário.
Delete Statement
A instrução Delete permite que o usuário remova 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 essa condição. O comando Delete é referido como uma execução registrada, porque 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 fique mais lenta. Delete é uma instrução DML e, portanto, não é confirmada automaticamente durante a execução do comando. Portanto, a operação Delete pode ser revertida para acessar os dados novamente, se necessário. Após a execução do comando Delete, ele deve ser confirmado ou revertido para salvar as alterações permanentemente. A instrução delete não remove a estrutura 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 Excluir é indicada abaixo.
EXCLUIR DE
ou
EXCLUIR DE ONDE
Truncate Statement
Truncate remove todos os dados de uma tabela existente em um banco de dados, mas preserva a mesma estrutura da tabela, também as restrições de integridade, privilégios de acesso e os relacionamentos com outras tabelas. Assim, não é necessário definir a tabela novamente, e a estrutura da tabela antiga pode ser usada, caso o usuário queira reutilizar a tabela novamente. Truncar remove dados inteiros desalocando as páginas de dados usadas para manter os dados, e somente essas desalocações de página são mantidas no log de transações. Portanto, o comando truncate utiliza apenas menos recursos do sistema e do log de transações para operação, portanto, é mais rápido do que outros comandos relacionados. Truncar é um comando DDL, portanto, usa confirmações automáticas antes e depois da execução da instrução. Portanto, truncate não pode reverter os dados novamente de forma alguma. Libera o espaço de memória utilizado pela tabela após a execução. Mas a instrução Truncate não pode ser aplicada nas tabelas referenciadas por restrições de chave estrangeira.
A seguir está a sintaxe comum para a instrução Truncate.
TRUNCATE TABLE
Qual é a diferença entre Excluir e Truncar?
1. Os comandos Delete e Truncate removem 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 Delete pode ser usado para excluir linhas específicas apenas em uma tabela usando uma condição relevante ou para excluir todas as linhas sem nenhuma condição, enquanto o comando Truncate pode ser usado apenas 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, portanto, é uma instrução de confirmação automática e não pode ser revertida de forma alguma. Portanto, é importante usar este comando com cuidado no gerenciamento de banco de dados.
4. A operação Truncate consome menos recursos do sistema e recursos de log de transações do que a operação Delete, portanto, Truncate é considerado mais rápido 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 pode ser usado quando a tabela é referenciada por uma restrição de chave estrangeira e, nesse caso, o comando Delete pode ser usado em vez de Truncate.
7. Por fim, ambos os comandos apresentam vantagens e também desvantagens na aplicação em Sistemas de Gerenciamento de Banco de Dados e o usuário deve estar atento ao uso adequado desses comandos para obter bons resultados.