22 Votos

MySQL: Eliminar Datos de Tabla - Diferencia entre TRUNCATE, DELETE y DROP

Tutorial de Stefan Trost | Última actualización el 14/04/2024 | Creado el 29/11/2022

En este pequeño tutorial, queremos echar un vistazo más de cerca a la diferencia entre los comandos MySQL TRUNCATE, DELETE y DROP. Los tres comandos tienen que ver con la eliminación de datos de las tablas o la eliminación de tablas enteras.

El tutorial se divide en las siguientes secciones:

DELETE: Eliminar registros individuales

El comando más conocido de los tres comandos es DELETE. Con DELETE, es posible eliminar registros individuales de una tabla. Aquí hay un ejemplo de cómo usar este comando:

DELETE FROM tabla WHERE id = 2;
DELETE FROM tabla WHERE id > 7 AND id < 30;
DELETE FROM tabla WHERE nombre = 'Anna';
DELETE FROM tabla WHERE nombre LIKE '%abc%';

Estas son cuatro instrucciones SQL que cada uno elimina registros de la tabla "tabla" de acuerdo con ciertos criterios. El primer comando elimina el registro con el ID 2, el segundo comando todos los registros que tienen una ID mayor de 7 y inferior de 30 (IDs del 8 al 29), y el tercer comando elimina el registro o los registros en los que la columna "nombre" es igual a "Anna" respectivamente solo contiene "Anna". Después de todo, el último comando elimina todos los registros en los que la columna "nombre" contiene la cadena "abc".

Como puede ver, en este punto, podemos definir cualquier criterio para eliminar registros de datos, de la misma manera que podemos definir la selección en la parte WHERE de una consulta SELECT.

Eliminación de todos los registros de una tabla

En los ejemplos del comando DELETE que vimos en la última sección, hemos descrito en detalle detrás de WHERE qué registros deben eliminarse. Pero también podemos omitir la declaración WHERE:

DELETE FROM tabla;

Esta instrucción no tiene limitaciones según qué criterios se deben eliminar los registros. Por lo tanto, todos los registros de la tabla se perderán irreperables. Toda la tabla está vacía después de esta consulta.

También con el comando TRUNCATE, se eliminan todos los registros de una tabla. Puede usar este comando de la siguiente manera:

TRUNCATE TABLE tabla;

Este comando también elimina todos los datos de forma permanente de la tabla "tabla" y, por lo tanto, el efecto de esta instrucción en los registros es idéntico a "DELETE FROM tabla". Sin embargo, la implementación técnica es diferente:

Diferencia entre TRUNCATE y DELETE

Durante la eliminación con DELETE, cada registro de la tabla se eliminará individualmente, mientras que TRUNCATE tiene un enfoque diferente: TRUNCATE primero elimina la tabla completa, incluidas las definiciones de las columnas y luego crea una nueva tabla en blanco idéntica sin datos.

Como resultado, TRUNCATE es mucho más rápido que la instrucción DELETE. Además, en la naturaleza de las cosas se encuentra cómo los dos comandos de la eliminación tratan las columnas AUTO_INCREMENT. TRUNCATE restablece el valor de AUTO_INCREMENT a 1, porque se reconstruye toda la tabla, mientras que DELETE no hace un reset y la columna continuará contando donde se detuvo. Por lo tanto, si desea mantener su valor de AUTO_INCREMENT, debe confiar, a pesar del rendimiento bastante pobre, en DELETE o debe guardar el valor antes del proceso de eliminación para configurarlo manualmente después.

Eliminar tabla completa con DROP

El último comando que veremos se llama DROP:

DROP TABLE tabla;
DROP TABLE tabla1, tabla2;
DROP TABLE IF EXISTS tabla1, tabla2;

DROP elimina toda la tabla, incluidos todos los datos y las definiciones de las columnas de la tabla. Entonces, después de haber llevado a cabo un comando DROP, toda la tabla desaparecerá y no se puede recuperar. En contraste, DELETE y TRUNCATE solo eliminan los datos de la tabla, mientras que las definiciones de la tabla permanecen.

Puede usar DROP como se muestra en el ejemplo. Con la primera línea, se elimina la tabla "tabla" completa, con la segunda línea puede ver cómo eliminar varias tablas simultáneamente dentro de una sola declaración. En la tercera línea, se agrega "IF EXISTS" (si existe). Esta mejora asegura que no surja ningún mensaje de error al intentar eliminar una tabla que no existe.

Advertencia

Debe tratar con los comandos DELETE, TRUNCATE y DROP con mucho cuidado, porque los registros o la tabla completa no se pueden restaurar después de la eliminación. Asegúrese de realmente no necesita los datos y siempre haga una copia de seguridad de su base de datos antes de usar los comandos como una precaución.

De lo contrario, lo único que puede hacer es crear una nueva columna nuevamente.

ResponderPositivoNegativo

Sobre el Autor

AvatarPuede encontrar software de Stefan Trost en la pagina es.sttmedia.com. ¿Necesita un software individual según sus propios requisitos? Escribenos: es.sttmedia.com/contacto
Ver Perfil

 

Temas Relacionados

SQLite: Examinar si existe una Tabla

Información | 0 Comentarios

CSS: Cómo incluir CSS en HTML

Tutorial | 0 Comentarios

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.