Eliminación de Registros con DELETE y TRUNCATE
Aprende a eliminar registros específicos con DELETE, comprende la diferencia fundamental con TRUNCATE TABLE y adopta el patrón profesional de Borrado Lógico (Soft Delete).
Sintaxis de DELETE
La sentencia DELETE se utiliza para eliminar filas existentes en una tabla que cumplan una condición específica definida en la cláusula WHERE.
DELETE FROM inscripciones
WHERE id = 5;
⚠️ ¿Qué sucede si no usas WHERE?
Si ejecutas DELETE FROM inscripciones; sin WHERE, eliminarás absolutamente todas las filas de la tabla una por una, registrando cada borrado en el archivo de log de transacciones.
Diferencia Crucial: DELETE vs TRUNCATE TABLE
Cuando necesitas vaciar una tabla por completo, existen dos caminos con implicaciones de rendimiento muy distintas:
| Característica | DELETE FROM tabla; |
TRUNCATE TABLE tabla; |
|---|---|---|
| Tipo de Operación | DML (Data Manipulation Language) | DDL (Data Definition Language) |
| Mecanismo | Elimina fila por fila y graba cada una en el log de transacciones. | Libera y recrea las páginas de datos en el disco de inmediato. |
| Velocidad | Lento en tablas grandes. | Prácticamente instantáneo (milisegundos). |
| Contador AUTO_INCREMENT | Conserva el valor del último ID insertado. | Reinicia el contador autoincremental a 1. |
| Cláusula WHERE | Permite filtrar qué registros eliminar. | No admite WHERE; siempre vacía la tabla completa. |
Patrón Recomendado: Borrado Lógico (Soft Delete)
En aplicaciones modernas y sistemas con auditoría (contabilidad, salud, SaaS), el borrado físico con DELETE suele prohibirse. En su lugar, se usa una columna como activo TINYINT(1) DEFAULT 1 o eliminado_en DATETIME NULL:
-- En lugar de DELETE, desactivamos el registro:
UPDATE estudiantes
SET activo = 0
WHERE id = 4;
-- Y en las consultas cotidianas filtramos solo los activos:
SELECT * FROM estudiantes WHERE activo = 1;
⚡ Eliminación Segura con Filtro Específico
Elimina una inscripción específica y recupera los datos de la fila eliminada mediante RETURNING:
-- Eliminar la inscripción con ID 5 de forma controlada
DELETE FROM inscripciones
WHERE id = 5
RETURNING id AS id_eliminado, estudiante_id, curso_id, nota;
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de SQL & MySQL y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.