🗑️ Eliminar registros en SQL
Ya sabemos crear tablas, insertar datos y consultarlos.
Ahora toca una operación que parece sencilla… pero que puede salir muy mal si no tienes cuidado:
eliminar datos.
Porque sí, borrar registros en SQL es fácil.
Demasiado fácil.
Y precisamente por eso es una de esas operaciones que hay que entender bien desde el principio.
💣 DELETE - El comando más peligroso
La instrucción que se utiliza para eliminar registros es DELETE.
Por ejemplo:
DELETE FROM jobs;
Y aquí viene el problema:
esa consulta borra todos los registros de la tabla jobs.
No uno. No varios filtrados. Todos.
⚠️ El error clásico: olvidarte del WHERE
Cuando quieres eliminar un registro concreto, normalmente necesitas acompañar el DELETE con una condición.
Por ejemplo:
DELETE FROM jobs
WHERE id = 3;
Aquí sí estamos diciendo exactamente qué fila queremos borrar:
- De la tabla
jobs - Solo el registro cuyo
idsea3
Y eso cambia absolutamente todo.
🧠 Regla de oro: si hay DELETE, piensa en WHERE
Hay una idea que merece quedarse grabada:
Si escribes un
DELETEy no has puestoWHERE, probablemente estás a punto de liarla.
Porque sin filtro, SQL entiende que quieres eliminar todo el contenido de la tabla.
Y sí, esto le ha pasado a muchísima gente.
😅 Tranquilidad: nos ha pasado a todos
Uno de los grandes clásicos del desarrollo es borrar más datos de los que querías por olvidar una condición.
Es el típico error que da respeto, y con razón.
Pero también conviene entender algo importante:
- Es un error muy conocido
- Le ha pasado a muchísima gente
- Y por eso los motores modernos suelen intentar protegerte
🛡️ Mecanismos de seguridad en bases de datos modernas
Hoy en día, muchos motores de base de datos modernos incorporan mecanismos para evitar este tipo de errores.
En muchos casos:
- Te muestran una advertencia
- Bloquean ciertas operaciones peligrosas
- O exigen desactivar un modo seguro para ejecutar borrados masivos sin filtro
Esto ocurre habitualmente en motores como:
- PostgreSQL
- MySQL
La idea es simple: si una operación puede arrasar con una tabla entera, lo normal es que la base de datos intente ponerte una barrera antes.
⚠️ SQLite puede ser más permisivo
En el caso de SQLite, esa protección puede no ser tan estricta.
Eso significa que una instrucción como esta:
DELETE FROM jobs;
puede ejecutarse directamente y borrar todos los registros sin preguntar demasiado.
Por eso, cuando trabajas con SQLite, todavía tienes que ir con más cuidado.
🔒 No desactives protecciones porque sí
En algunos entornos puedes encontrarte opciones de configuración para permitir operaciones peligrosas.
Sí, se puede hacer.
Pero no suele ser buena idea desactivar esas protecciones alegremente.
Si el motor te está avisando de que algo no es seguro, normalmente es porque realmente no lo es.
✅ Buenas prácticas al borrar datos
Cuando vayas a eliminar registros, acostúmbrate a seguir estas ideas:
- Revisa dos veces el
WHERE - Asegúrate de que el filtro apunta exactamente a lo que quieres borrar
- No ejecutes un
DELETEcon prisas - Desconfía especialmente de consultas que afectan muchas filas
- Aprovecha las protecciones del motor en lugar de quitarlas
🧪 Un buen hábito antes de borrar
Un truco muy útil es pensar primero la consulta como si fuera un SELECT.
Por ejemplo, antes de hacer esto:
DELETE FROM jobs
WHERE id = 3;
puedes comprobarlo con:
SELECT * FROM jobs
WHERE id = 3;
Si el SELECT devuelve exactamente lo que quieres borrar, entonces ya tienes mucha más seguridad para ejecutar el DELETE.
🧠 Qué debes llevarte de esta clase
Lo importante de esta clase no es solo aprender la sintaxis de DELETE.
Es entender el riesgo que conlleva.
Quédate con estas ideas:
DELETEsirve para eliminar registros- Sin
WHERE, elimina todo - Con
WHERE, puedes borrar solo lo que necesitas - Muchos motores modernos intentan protegerte
- SQLite puede ser más permisivo
- Borrar datos exige más cuidado que leerlos o insertarlos
🚀 A partir de aquí
Ahora ya sabes una de las operaciones fundamentales del CRUD:
- Crear
- Leer
- Actualizar
- Eliminar
Y también sabes por qué esta última merece un respeto especial.
En la siguiente parte lo normal será seguir profundizando en consultas más útiles, combinaciones de filtros o modificaciones de datos existentes.
💡 Tip: antes de ejecutar un
DELETE, pregúntate esto: “¿estoy seguro de que esteWHEREapunta solo a lo que quiero borrar?” Si la respuesta no es un sí clarísimo, no pulses Enter todavía.