Tema SQL
DELETE
Elimina filas que cumplen un predicado. Sin WHERE, borra todo el contenido de la tabla salvo limitaciones de permisos, triggers o claves foráneas; en producción suele ser una operación controlada y auditada.
Descripción
DELETE elimina filas que satisfacen WHERE. A diferencia de TRUNCATE, suele ser DML con registro fila a fila, dispara triggers AFTER/BEFORE DELETE y respeta transacciones. Si necesitas borrar masivamente, valora lotes, archivado previo o TRUNCATE cuando el motor y las FK lo permitan. Las tablas referenciadas por otras pueden impedir DELETE hasta que borres o actualices primero los hijos. En aplicaciones usa siempre parámetros en el WHERE y confirma el número de filas afectadas en pruebas.
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
DELETE FROM tabla
[ WHERE condición ];
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- DELETE FROM
- Tabla origen; en algunos motores puedes usar alias o DELETE t FROM t JOIN … para condiciones más complejas.
- WHERE
- Condición por fila. Si falta, se aplican las reglas del motor para DELETE masivo (a veces prohibido sin WHERE explícito en herramientas).
Ejemplos
Ejemplo 1
DELETE FROM sesiones
WHERE expira_en < NOW();
Ejemplo 2
DELETE FROM carrito
WHERE usuario_id = 9
AND creado_en < DATE_SUB(NOW(), INTERVAL 1 DAY);
Temas relacionados
Enlaces internos para seguir leyendo: SELECT, WHERE, JOIN, GROUP BY y el resto de la referencia SQL.
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.