Eliminar datos de una tabla de SQL Server con TRUNCATE TABLE

Resumen: en este tutorial, aprenderás a usar la declaración TRUNCATE TABLE
de SQL Server para eliminar todas las filas de una tabla de manera rápida y eficiente.
Introducción a la sentencia TRUNCATE TABLE de SQL Server
Cuando se desea eliminar todas las filas de una tabla, normalmente se usa la declaración DELETE sin una cláusula WHERE, ahora aprenderas a usar TRUNCATE TABLE para hacer eso.
El siguiente ejemplo crea una nueva tabla denominada customer_groups
e inserta algunas filas en la tabla:
CREATE TABLE sales.customer_groups (
group_id INT PRIMARY KEY IDENTITY,
group_name VARCHAR (50) NOT NULL
);
INSERT INTO sales.customer_groups (group_name)
VALUES
(Estrada Web Group),
('Third Party'),
('One time');
Para eliminar todas las filas de la tabla customer_groups
, se utiliza la declaración DELETE de la siguiente manera:
DELETE FROM sales.customer_groups;
Además de la declaración DELETE FROM, se puede usar la declaración TRUNCATE TABLE
para eliminar todas las filas de una tabla.
TRUNCATE TABLE
A continuación se ilustra la sintaxis de la sentencia TRUNCATE TABLE
:
TRUNCATE TABLE [database_name.][schema_name.]table_name;
En esta sintaxis, primero se especifica el nombre de la tabla de la que se desea eliminar todas las filas. En segundo lugar, schema_name es el nombre del esquema en la base de datos en la que se creó la tabla. El nombre de la base de datos es opcional. Si lo omite, la declaración eliminará la información de la tabla en la base de datos actualmente conectado.
Las siguientes declaraciones primero insertan algunas filas en la tabla customer_groups
y luego eliminan todas las filas usando la declaración TRUNCATE TABLE
:
INSERT INTO sales.customer_groups (group_name)
VALUES
('Estrada Web Group'),
('Third Party'),
('One time');
TRUNCATE TABLE sales.customer_groups;
TRUNCATE TABLE
es similar a la declaración DELETE sin una cláusula WHERE. Sin embargo, la declaración TRUNCATE
se ejecuta más rápido y utiliza menos recursos del sistema y del registro de transacciones.
TRUNCATE TABLE vs. DELETE
TRUNCATE TABLE
tiene las siguientes ventajas sobre la instrucción DELETE:
1) Usar menos registro de transacciones
La declaración DELETE
elimina las filas de una en una e inserta una entrada en el registro de transacciones para cada fila eliminada. Por otro lado, la declaración TRUNCATE TABLE
elimina los datos desasignando las páginas de datos utilizadas para almacenar los datos de la tabla e inserta solo las desasignaciones de página en los registros de transacciones.
2) Usa menos candados
Cuando la instrucción DELETE
se ejecuta mediante un bloqueo de fila, cada fila de la tabla se bloquea para su eliminación. TRUNCATE TABLE
bloquea la tabla y las páginas, no cada fila.
3) Restablecimiento de identidad
Si la tabla que se va a truncar tiene una columna de identidad, el contador de esa columna se restablece al valor inicial cuando la sentencia TRUNCATE TABLE
elimina los datos, pero no así con la sentencia DELETE.
En este tutorial, aprendiste a usar la declaración TRUNCATE TABLE
para eliminar todas las filas de una tabla de manera rápida y eficiente.