MySQL ELIMINAR consulta: cómo eliminar una fila de la tabla

⚡ Resumen inteligente

MySQL La consulta DELETE elimina las filas que ya no son necesarias de una tabla y devuelve el número de filas afectadas. Este recurso explica la sintaxis de DELETE, el filtrado WHERE, la eliminación de varias filas con IN y las alternativas más seguras TRUNCATE y DROP.

  • 🗑️ Declaración principal: DELETE FROM `table_name` [WHERE condition] elimina filas completas y devuelve el número de filas eliminadas.
  • ⚠️ Omitido DÓNDE: Si se omite la cláusula WHERE, se eliminan todas las filas de la tabla, por lo que siempre se debe filtrar antes de ejecutar la consulta.
  • 🎯 TargetEliminación de ed: WHERE `movie_id` = 18 elimina un registro, mientras que WHERE `movie_id` IN (20,21) elimina varios en una sola instrucción.
  • 🔁 Acción Irreversible: Los datos eliminados no se pueden recuperar sin una copia de seguridad; por lo tanto, realice una copia de seguridad de la base de datos antes de ejecutar DELETE.
  • 📊 Ámbito a nivel de fila: DELETE elimina filas completas; borrar el valor de una sola columna requiere UPDATE con NULL.
  • 🇧🇷 ELIMINAR vs TRUNCAR vs ELIMINAR: DELETE filtra las filas, TRUNCATE vacía una tabla instantáneamente y DROP elimina la estructura de la tabla en sí.

¿Qué es la consulta ELIMINAR?

El MySQL BORRAR La instrucción DELETE se utiliza para eliminar filas que ya no son necesarias en una tabla de base de datos. Elimina la fila completa de la tabla y devuelve el número de filas eliminadas. La instrucción DELETE resulta útil cuando se necesita borrar datos temporales u obsoletos de la base de datos.

La consulta DELETE en MySQL Puede eliminar más de una fila de una tabla en una sola ejecución. Esto resulta ventajoso cuando se elimina un gran número de filas de una tabla de base de datos.

Una vez eliminada una fila, no se puede recuperar. Realice siempre una copia de seguridad de la base de datos antes de eliminar datos, para poder restaurarla y revisarla posteriormente si fuera necesario.

Cómo eliminar una fila en MySQL

Con el propósito de la declaración claro, el siguiente paso es la sintaxis. Para eliminar una fila en MySQL, se utiliza la declaración DELETE FROM:

DELETE FROM `table_name` [WHERE condition];

AQUÍ:

  • ELIMINAR DE `table_name` indica al MySQL servidor para eliminar filas de la tabla nombrada.
  • [DONDE condición] Es opcional y se utiliza para aplicar un filtro que restringe el número de filas afectadas por la consulta DELETE.

Si Dónde cláusula no se usa en el MySQL Consulta DELETE, luego todos Las filas de una tabla determinada serán eliminadas.

⚠️ Advertencia: Ejecute primero el filtro como una SELECT. Si devuelve exactamente las filas que desea eliminar, la DELETE correspondiente es segura. La sintaxis completa está documentada en el MySQL Manual de instrucciones DELETE.

Ejemplo de MySQL Eliminar consulta

La siguiente sección crea un pequeño conjunto de datos y luego elimina elementos del mismo.

Paso 1: Insertar datos de muestra

Antes de entrar en una discusión más detallada sobre la instrucción SQL DELETE, insertemos algunos datos de ejemplo en la tabla movies para trabajar con ellos.

INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

Al ejecutar el script anterior, se agregan tres (3) películas a la tabla de películas. Antes de continuar, listemos todas las películas en nuestra tabla.

SELECT * FROM `movies`;

Al ejecutar el script anterior obtenemos los siguientes resultados. Las tres filas recién insertadas están resaltadas.

id_película título director año_de lanzamiento categoria ID
1 Piratas del Caribe 4 Rob Marshall 2011 1
2 Olvidando a Sarah Marshal Nicolás Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nombre Negro Edgar Jimz 2010 NULL
5 Las niñas de papá NULL 2007 8
6 Ángeles y demonios NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey moonERS Juan Schultz 2005 8
16 67% culpable NULL 2012 NULL
18 El gran dictador Charlie Chaplin 1940 7
19 película de muestra Anónimo NULL 8
20 película 3 John Brown 1920 8

Paso 2: Eliminar una sola fila

Supongamos que la videoteca Myflix ya no desea alquilar "El gran dictador" y quiere eliminarla de su base de datos. Su ID de película es 18, por lo que el siguiente script elimina esa fila.

DELETE FROM `movies` WHERE `movie_id` = 18;

Ejecutando el script anterior en MySQL Banco de trabajo En la base de datos de Myflix se elimina la película con ID 18 de la tabla.

Ahora vamos a comprobar el estado actual de la tabla de películas.

SELECT * FROM `movies`;
id_película título director año_de lanzamiento categoria ID
1 Piratas del Caribe 4 Rob Marshall 2011 1
2 Olvidando a Sarah Marshal Nicolás Stoller 2008 2
3 X-Men NULL 2008 NULL
4 Code Nombre Negro Edgar Jimz 2010 NULL
5 Las niñas de papá NULL 2007 8
6 Ángeles y demonios NULL 2007 6
7 Da Vinci Code NULL 2007 6
9 Honey moonERS Juan Schultz 2005 8
16 67% culpable NULL 2012 NULL
19 película de muestra Anónimo NULL 8
20 película 3 John Brown 1920 8

NOTA:

  • La película con ID 18 ya no aparece en el conjunto de resultados de la consulta.
  • No se puede eliminar una sola columna de una tabla con DELETE. La instrucción elimina una fila completa. Para borrar un campo, utilice una Consulta de actualización eso establece la columna en NULL.

Paso 3: Eliminar varias filas con IN

Digamos que tenemos una lista de películas que queremos eliminar. En lugar de ejecutar una instrucción por cada fila, podemos combinar la cláusula WHERE con el operador IN.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

Al ejecutar el script anterior, se eliminan las películas con los ID 20 y 21 de nuestra tabla de películas en una sola pasada.

ELIMINAR vs TRUNCAR vs ELIMINAR en MySQL

DELETE no es la única forma de eliminar datos de MySQLLos principiantes suelen recurrir a él cuando un comando más rápido sería más adecuado, por lo que la siguiente tabla compara los tres comandos de eliminación.

Elemento BORRAR TRUNCAR DROP
Tipo de comando DML DDL DDL
Dónde cláusula Soportado No se admite No se admite
Lo que se elimina Filas seleccionadas Todas las filas Estructura de filas y tabla
Rollback Posible dentro de una transacción No es posible (commit implícito) No es posible (commit implícito)
AUTOINCREMENTO El contador se mantiene El contador se restablece al valor inicial. El contador se retira junto con la mesa.
Velocidad en mesas grandes Lento (fila por fila) Muy rápido Muy rápido

Utilice ELIMINAR cuando necesite un filtro o la posibilidad de revertir. TABLA TRUNCADA Cuando quieras vaciar una tabla rápidamente y restablecer su contador AUTO_INCREMENT, usa DROP solo cuando la tabla ya no sea necesaria, ya que elimina la definición junto con los datos.

Preguntas Frecuentes

Solo dentro de una transacción abierta. Ejecute START TRANSACTION, ejecute DELETE y luego ROLLBACK para deshacer la operación. Después de COMMIT o con autocommit habilitado, las filas se pierden y solo una copia de seguridad puede restaurarlas.

Utilice una eliminación de varias tablas con una ÚNETENombrando ambas tablas antes de la palabra clave FROM. Como alternativa, defina la clave externa con ON DELETE CASCADE para que las filas secundarias se eliminen automáticamente cuando se elimine la fila principal.

El modo de actualización segura está habilitado de forma predeterminada en MySQL Banco de trabajoRechaza cualquier instrucción DELETE cuya cláusula WHERE no utilice una columna clave, evitando así eliminaciones accidentales de tablas completas. Desactívela en Editar > Preferencias > Editor SQL.

Sí. Los asistentes de IA traducen una solicitud en lenguaje natural a la sintaxis DELETE y pueden explicar la cláusula WHERE. Siempre revise primero el filtro generado comparándolo con una consulta SELECT, ya que un modelo de IA no puede ver sus datos en tiempo real.

No. Deja que la IA elabore la instrucción, pero ejecútala tú mismo primero en una copia de seguridad o de prueba. Si falta una cláusula WHERE, se eliminan todas las filas, y ninguna herramienta de IA puede revertir eso una vez que se confirma la transacción.

Resumir este post con: