> Faqs > Sentencia SQL para vaciar una tabla

Sentencia SQL para vaciar una tabla

Quiero eliminar todos los registros que hay en una tabla en una base de datos MySQL. Deseo que la tabla quede vacía de todo.

Respuestas

Pues podrías hacer dos cosas, siempre restringiéndonos al lenguaje SQL.

Indico la sintaxis para una base de datos MySQL, aunque no será muy distinto para otros sistemas gestores de base de datos.

Primero una sentencia que borra todos los datos de una tabla:

delete from nombre_tabla where 1   

Esto elimina todos los datos de la tabla, simplemente borrando todos los registros.

Otra posibilidad es:

truncate nombre_tabla

Esto vacía la tabla y el efecto es parecido a hacer un delete de todos los registros. La diferencia entre el delete y el truncate es que con truncate se inicializa todo lo que había en la tabla.

Por ejemplo, imaginemos que tenemos una tabla de usuarios y que tenemos hasta 100 usuarios y un campo autonumérico que se llama id_usuario. Si íbamos por el usuario 100, un posible nuevo usuario sería el insertado como id 101.

Imaginemos que estamos en el punto en el que teníamos 100 usuarios y entonces hacemos un delete de todos los registros, con la sentencia delete. Entonces se borrarán todos los registros, pero si insertamos un nuevo registro, este se insertará con el id 101.

Ahora bien, imaginemos que estamos en el mismo punto en el que tenemos 100 usuarios y luego hacemos un truncate en lugar de un delete y borramos todos los registros. Entonces, si insertamos un registro nuevo cuando la tabla se ha vaciado con un truncate, el registro entrará con id 1.

Miguel Angel

Para borrar todos los registros de una tabla en MySQL, puedes usar la instrucción DELETE sin una cláusula WHERE, o la instrucción TRUNCATE. Ambas te pueden funcionar, siempre que no existan restricciones por las reglas de integridad referencial que tengas en la tabla que pretendes borrar completamente.

Usando DELETE

DELETE FROM nombre_de_la_tabla;

La instrucción DELETE sin una cláusula WHERE eliminará todos los registros. Si no pones where equivale a poner algo como where true, es decir, siempre. Pero esta instruccón conservará la estructura de la tabla, incrementales y tal. Además, la operación DELETE se puede revertir si estás dentro de una transacción y usas un ROLLBACK antes de hacer un COMMIT.

Usando TRUNCATE

TRUNCATE TABLE nombre_de_la_tabla;

La instrucción TRUNCATE es más rápida que DELETE porque elimina los registros liberando el espacio de almacenamiento asociado a la tabla. Esto quiere decir que se reiniciarán los autoincrement.

Debes tener cuidado porque TRUNCATE no puede ser revertido con un ROLLBACK en una transacción. No hay vuelta atrás.

Elige la opción que quieras. Generalmente no hay mucha diferencia salvo el tema de los contadores de autoincremento.

Luis Enrique
34 1 2 1