DELETE es un comando DML (lenguaje de manipulación de datos) y se usa cuando especificamos la fila (tupla) que queremos eliminar o eliminar de la tabla o relación. El comando DELETE puede contener una cláusula WHERE. Si la cláusula WHERE se usa con el comando DELETE, entonces elimina o elimina solo aquellas filas (tuplas) que cumplen la condición; de lo contrario, elimina todas las tuplas (filas) de la tabla de manera predeterminada. Recuerde que DELETE registra las eliminaciones de filas.
Sintaxis: comando DELETE
DELETE FROM TableName WHERE condition;
TRUNCATE es un comando DDL (lenguaje de definición de datos) y se utiliza para eliminar todas las filas o tuplas de una tabla. A diferencia del comando DELETE, el comando TRUNCATE no contiene una cláusula WHERE. En el comando TRUNCATE, el registro de transacciones de cada página de datos eliminada no se registra. A diferencia del comando DELETE, el comando TRUNCATE es rápido. No podemos revertir los datos después de usar el comando TRUNCATE.
Sintaxis: Comando TRUNCATE
TRUNCATE TABLE TableName;The identity
Veamos que la diferencia entre los comandos DELETE y TRUNCATE es la siguiente:
Borrar | Truncar |
---|---|
El comando DELETE se usa para eliminar filas específicas (una o más). | Mientras que este comando se usa para eliminar todas las filas de una tabla. |
Es un comando DML (lenguaje de manipulación de datos). | Si bien es un comando DDL (lenguaje de definición de datos). |
Puede haber una cláusula WHERE en el comando DELETE para filtrar los registros. | Si bien es posible que no haya una cláusula WHERE en el comando TRUNCATE. |
En el comando DELETE, una tupla se bloquea antes de eliminarla. | Mientras está en este comando, la página de datos se bloquea antes de eliminar los datos de la tabla. |
La declaración DELETE elimina las filas de una en una y registra una entrada en el registro de transacciones para cada fila eliminada. | TRUNCATE TABLE elimina los datos desasignando las páginas de datos utilizadas para almacenar los datos de la tabla y registra solo las desasignaciones de páginas en el registro de transacciones. |
El comando DELETE es más lento que el comando TRUNCATE. | Mientras que el comando TRUNCATE es más rápido que el comando DELETE. |
Para usar Eliminar, necesita el permiso ELIMINAR en la tabla. | Para usar Truncar en una tabla, necesitamos al menos el permiso ALTER en la tabla. |
La identidad de la columna de menos conserva la identidad después de usar la instrucción DELETE en la tabla. | Identidad, la columna se restablece a su valor inicial si la tabla contiene una columna de identidad. |
La eliminación se puede utilizar con vistas indexadas. | Truncar no se puede usar con vistas indexadas. |
Este comando también puede activar el disparador. | Este comando no activa el disparador. |
La declaración DELETE ocupa más espacios de transacción que Truncar. | La declaración truncada ocupa menos espacios de transacción que DELETE. |