8. Eliminación de Filas (DELETE y TRUNCATE)



DELETE

Para eliminar un registro de la tabla utilizamos la sentencia DELETE FROM.

La primera forma, la cual eliminara todos los registros de la tabla:

DELETE FROM tabla;

La segunda forma es agregando la cláusula WHERE para filtrar y solo eliminar algunos registros:

DELETE FROM tabla WHERE columna1=valor1;

TRUNCATE TABLE

Cuando queremos eliminar todos los registros de una tabla podemos utilizar la sentencia TRUNCATE TABLE:

TRUNCATE TABLE tabla;

Al vaciar la tabla y está relacionada con otra nos puede enviar un mensaje de error ya que no se podrá eliminar teniendo relación, en caso de que aun así queramos vaciar la tabla podemos quitar las restricciones temporalmente con la siguiente sentencia:

-- No comprobar restricciones de clave externa
SET FOREIGN_KEY_CHECKS = 0;

//Vaciamos tabla
TRUNCATE TABLE tabla;

-- Especificar para comprobar restricciones de clave externa (este es el valor por defecto)
SET FOREIGN_KEY_CHECKS = 1;

Diferencia entre DELETE FROM y TRUNCATE TABLE

La diferencia entre DELETE FROM y TRUNCATE TABLE es que a primera elimina los registros pero si la tabla tiene algún indice autoincremental este se mantiene en el ultimo asignado y en truncate table ademas de eliminar todos los registros inicializa el indice autoincremental.