Recomendado, 2024

Escolha Do Editor

Diferença entre DELETE e TRUNCATE no SQL

DELETE e TRUNCATE são os comandos usados ​​para remover as tuplas de uma relação, mas diferem em muitos contextos. No SQL, o comando DELETE é um comando Data Manipulation Language, enquanto o comando TRUNCATE é um comando Data Definition Language . No entanto, o ponto que nos permite diferenciar entre DELETE e TRUNCATE é que DELETE é capaz de remover tuplas especificadas de uma relação, enquanto o comando TRUNCATE remove as tuplas inteiras de uma relação.

não devemos parar por aqui, existem muitas outras diferenças entre DELETE e TRUNCATE. Vamos discuti-los com a ajuda da tabela de comparação mostrada abaixo.

Gráfico de comparação

Base para ComparsãoEXCLUIRTRUNCAR
BasicVocê pode especificar a tupla que deseja excluir.Exclui todas as tuplas de uma relação.
LínguaDELETE é um comando da Linguagem de Manipulação de Dados.TRUNCATE é um comando de Linguagem de Definição de Dados.
ONDEO comando DELETE pode ter a cláusula WHERE.Comando TRUNCATE não tem cláusula WHERE.
DesencadearO comando DELETE ativa o gatilho aplicado na tabela e faz com que disparem.Comando TRUNCATE não ativa os gatilhos para disparar.
EliminaçãoO comando DELETE elimina as tuplas uma a uma.TRUNCATE exclui toda a página de dados que contém as tuplas.
BloqueioO comando DELETE bloqueia a linha / tupla antes de excluí-la.O comando TRUNCATE bloqueia a página de dados antes de excluir os dados da tabela.
RapidezO comando DELETE age mais devagar em comparação com TRUNCATE.TRUNCATE é mais rápido em comparação com o DELETE.
TransaçãoDELETE registra o log de transação para cada tupla excluída.Truncar o registro de transações para cada página de dados excluídos.
RestaurarO comando DELETE pode ser seguido por COMMIT ou ROLLBACK.Comando TRUNCATE não pode ser ROLLBACK.

Definição de DELETE

DELETE é um comando DML ( Data Manipulation Language ). A tarefa do comando DELETE é excluir ou remover as tuplas de uma tabela ou de uma relação. Usando DELETE, podemos eliminar a tupla inteira, com todos os seus valores de atributo de uma relação. DELETE não remove o valor de um atributo específico, de uma tupla da relação.

Você pode filtrar as tuplas que deseja excluir de uma tabela, usando a cláusula WHERE . Se você especificar a cláusula WHERE na instrução DELETE, ela excluirá apenas as tuplas que satisfazem a condição da cláusula WHERE. Mas, se você não especificar a cláusula WHERE na instrução DELETE, ela exclui ou elimina todas as tuplas de uma relação. A cláusula WHERE na instrução DELETE pode conter instruções SELECT-FROM-WHERE aninhadas.

A sintaxe do comando DELETE é a seguinte:

DELETE FROM nome_da_tabela WHERE [ conditon ];

O comando DELETE opera somente em uma única relação ou tabela por vez. No caso de você querer excluir tuplas de diferentes relações, você tem que colocar um comando DELETE diferente para cada. Mas a exclusão da tupla de uma relação pode violar a integridade referencial do banco de dados, o que pode ser resolvido com a ajuda de gatilhos. Se o comando DELETE viola a integridade referencial, então todos os triggers referenciais (se especificados) são ativados, o que propaga a ação delete nas tuplas de relações diferentes que se referem às tuplas deletadas.

O comando DELETE primeiro bloqueia a linha ou tupla a ser excluída e, em seguida, exclui a tupla uma por uma . Por isso, requer mais bloqueios e recursos que o tornam mais lento . Você pode fazer as alterações feitas pela instrução DELETE permanentes usando COMMIT, ou você pode redefinir o banco de dados usando ROLLBACK .

Definição de TRUNCATE

TRUNCATE é semelhante ao comando DELETE, pois também exclui tuplas de uma relação. A diferença é que exclui tuplas inteiras de uma relação. À medida que o comando TRUNCATE é executado, dados inteiros da tabela são excluídos, cada tupla junto com todos os seus valores de atributos são eliminados da tabela. Mas a estrutura da tabela ainda existe no banco de dados. Assim, você pode inserir novamente as tuplas na tabela. TRUNCATE é um comando de Linguagem de Definição de Dados.

A sintaxe do comando TRUNCATE é a seguinte:

TRUNCATE TABLE table_name ;

Como DELETE, TRUNCATE não opera nos dados da tabela linha por linha. Em vez disso, ele opera nas páginas de dados que armazenam os dados da tabela. Agora, quando TRUNCATE exclui páginas de dados, ele precisa adquirir o bloqueio nas páginas de dados em vez das tuplas. Portanto, isso resulta em menos exigência de bloqueios e recursos que tornam o TRUNCATE mais rápido em comparação com o DELETE.

A execução do comando TRUNCATE não ativa nenhum acionador, pois não opera dados linha por linha. TRUNCATE não pode ser executado caso a tabela seja referenciada por qualquer chave estrangeira . Uma vez que o comando TRUNCATE apaga os dados da tabela, ele nunca poderá ser recuperado .

Principais diferenças entre DELETE e TRUNCATE no SQL

  1. A principal diferença entre DELETE e TRUNCATE é que usando DELETE você pode excluir a tupla especificada de uma relação. Mas o uso de TRUNCATE excluirá as tuplas inteiras de uma relação.
  2. DELETE é o comando DML, enquanto TRUNCATE é o comando DDL.
  3. DELETE usa a cláusula WHERE para filtrar o registro / tuplas que devem ser excluídas. No entanto, TRUNCATE não requer a cláusula WHERE, uma vez que exclui todas as tuplas, portanto, não há necessidade de filtrar as tuplas.
  4. DELETE ativa os gatilhos referenciais aplicados às tabelas. Mas a TRUNCATE não dispara nenhum gatilho na mesa.
  5. O comando DELETE elimina as tuplas uma a uma da tabela, na ordem em que são processadas. No entanto, TRUNCATE não opera em tuplas uma a uma. Em vez disso, TRUNCATE opera na página de dados que armazena dados da tabela.
  6. DELETE adquire o bloqueio na tupla antes de excluí-lo, enquanto TRUNCATE adquire o bloqueio na página de dados antes de excluir a página de dados.
  7. TRUNCATE é mais rápido em comparação com o comando DELETE.
  8. EXCLUIR log de transação de registro para cada tupla enquanto, registro de transação de registro TRUNCATE para cada página de dados.
  9. Depois que você excluir os dados usando TRUNCATE, ele nunca poderá ser recuperado, enquanto você poderá recuperar os dados que foram excluídos usando o comando DELETE.

Conclusão:

Se você quiser personalizar a exclusão de registros da tabela, use o comando DELETE. Se você quiser esvaziar a tabela, ou seja, você não quer deixar nenhum dado em uma tabela, então use o comando TRUNCATE.

Top