No debemos detenernos aquí, hay muchas otras diferencias entre DELETE y TRUNCATE. Vamos a discutirlos con la ayuda de la tabla de comparación que se muestra a continuación.
Gráfica comparativa
Bases para Comparsion | BORRAR | TRUNCAR |
---|---|---|
BASIC | Puede especificar la tupla que desea eliminar. | Borra todas las tuplas de una relación. |
Idioma | DELETE es un comando de lenguaje de manipulación de datos. | TRUNCATE es un comando de lenguaje de definición de datos. |
DÓNDE | El comando DELETE puede tener la cláusula WHERE. | El comando TRUNCATE no tiene la cláusula WHERE. |
Desencadenar | El comando DELETE activa el activador aplicado en la tabla y hace que se activen. | El comando TRUNCATE no activa los disparadores para disparar. |
Supresión | El comando DELETE elimina las tuplas una por una. | TRUNCATE borra toda la página de datos que contiene las tuplas. |
Bloquear | El comando DELETE bloquea la fila / tupla antes de eliminarla. | El comando TRUNCATE bloquea la página de datos antes de eliminar los datos de la tabla. |
Velocidad | El comando DELETE actúa más lento en comparación con TRUNCATE. | TRUNCATE es más rápido en comparación con DELETE. |
Transacción | ELIMINAR registra el registro de transacciones para cada tupla eliminada. | Registre el registro de transacciones de TRUNCATE para cada página de datos eliminados. |
Restaurar | El comando DELETE puede ser seguido por COMMIT o ROLLBACK. | El comando TRUNCATE no puede ser ROLLBACK. |
Definición de DELETE
DELETE es un comando de lenguaje de manipulación de datos (DML). La tarea del comando DELETE es eliminar o eliminar las tuplas de una tabla o una relación. Usando BORRAR, podemos eliminar toda la tupla, con todos sus valores de atributo de una relación. BORRAR no elimina el valor de un atributo particular, de una tupla de la relación.
Puede filtrar las tuplas que desea eliminar de una tabla, utilizando la cláusula WHERE . Si especifica la cláusula WHERE en la sentencia DELETE, entonces solo eliminará las tuplas que cumplan con la condición de la cláusula WHERE. Pero si no especifica la cláusula WHERE en la instrucción DELETE, entonces, de forma predeterminada, elimina o elimina todas las tuplas de una relación. La cláusula WHERE en la instrucción DELETE puede contener instrucciones anidadas SELECT-FROM-WHERE .
La sintaxis del comando DELETE es la siguiente:
ELIMINAR DE table_name DONDE [ conditon ];
El comando DELETE opera solo en una sola relación o tabla a la vez. En caso de que desee eliminar la tupla de diferentes relaciones, debe colocar un comando DELETE diferente para cada una. Pero eliminar la tupla de una relación puede violar la integridad referencial de la base de datos, que se puede resolver con la ayuda de los activadores. Si el comando DELETE viola la integridad referencial, entonces se activan todos los activadores referenciales (si se especifican) que propagan la acción de eliminación en las tuplas de relación diferente que se refiere a las tuplas eliminadas.
El comando DELETE primero bloquea la fila o tupla que se va a eliminar y luego borra la tupla una por una . Por lo tanto, requiere más bloqueos y recursos que lo hacen más lento . Puede hacer que los cambios realizados por la sentencia DELETE sean permanentes utilizando COMMIT, o puede restablecer la base de datos utilizando ROLLBACK .
Definición de TRUNCATE
TRUNCATE es similar al comando DELETE ya que también elimina las tuplas de una relación. La diferencia es que elimina tuplas enteras de una relación. A medida que se ejecuta el comando TRUNCATE, se eliminan todos los datos de la tabla, cada tupla junto con todos los valores de sus atributos se eliminan de la tabla. Pero la estructura de la tabla todavía existe en la base de datos. Entonces, puedes ingresar nuevamente las tuplas en la tabla. TRUNCATE es un comando de lenguaje de definición de datos.
La sintaxis del comando TRUNCATE es la siguiente:
TRUNCATE TABLE table_name ;
Al igual que DELETE, TRUNCATE no funciona en datos de tabla fila por fila. En su lugar, opera en las páginas de datos que almacenan los datos de la tabla. Ahora, cuando TRUNCATE borra las páginas de datos, tiene que adquirir el bloqueo en las páginas de datos en lugar de tuplas. Por lo tanto, da como resultado menos requisitos de bloqueos y recursos que hacen que TRUNCATE sea más rápido en comparación con DELETE.
La ejecución del comando TRUNCATE no activa ningún desencadenante ya que no opera datos fila por fila. TRUNCATE no se puede ejecutar en caso de que la tabla sea referenciada por una clave externa . Una vez que el comando TRUNCATE elimina los datos de la tabla, nunca podrá recuperarse .
Diferencias clave entre DELETE y TRUNCATE en SQL
- La principal diferencia entre DELETE y TRUNCATE es que al usar DELETE puede eliminar una tupla específica de una relación. Pero el uso de TRUNCATE eliminará tuplas completas de una relación.
- DELETE es un comando DML mientras que TRUNCATE es un comando DDL.
- DELETE utiliza la cláusula WHERE para filtrar los registros / tuplas que se van a eliminar. Sin embargo, TRUNCATE no requiere la cláusula WHERE ya que elimina todas las tuplas, por lo que no es necesario filtrarlas.
- DELETE activa los disparadores referenciales aplicados a las tablas. Pero TRUNCATE no dispara ningún disparador en la mesa.
- El comando DELETE elimina las tuplas una por una de la tabla, en el orden en que se procesan. Sin embargo, TRUNCATE no funciona en las tuplas una por una. En su lugar, TRUNCATE opera en la página de datos que almacena los datos de la tabla.
- ELIMINAR adquiere el bloqueo en la tupla antes de eliminarlo, mientras que TRUNCATE adquiere el bloqueo en la página de datos antes de eliminar la página de datos.
- TRUNCATE es más rápido en comparación con el comando DELETE.
- ELIMINAR registro de transacciones de registro para cada tupla, mientras que TRUNCATE registro de transacciones de registro para cada página de datos.
- Una vez que elimine los datos utilizando TRUNCATE, nunca podrá recuperarlos mientras que puede recuperar los datos que eliminó utilizando el comando DELETE.
Conclusión:
Si desea personalizar la eliminación de registros de la tabla, puede utilizar el comando DELETE. Si desea vaciar la tabla, es decir, no desea dejar ningún dato en una tabla, utilice el comando TRUNCATE.