Eliminar todos los registros de una tabla en MySQL / Vaciar una tabla

Si queremos eliminar todos los registros de una tabla en MySql tenemos dos opciones, la primera es tan solo utilizar nuestra sentencia “DELETE” de siempre solo que sin ningún “WHERE”, haciendo que se borren todos los datos de la tabla:

 DELETE FROM mi_tabla

Pero también podemos optar por la alternativa que es mediante la declaración “TRUNCATE TABLE” de la siguiente forma:

TRUNCATE TABLE mi_tabla 

Al final básicamente funcionan igual, ya que cumplen su cometido que es eliminar todos los registros de determinada tabla, pero tienen ligeras diferencias:

Para empezar la opción con DELETE devuelve el número de registros que fueron borrados, mientras que TRUNCATE TABLE no devuelve nada.

Por otro lado TRUNCATE TABLE lo que hace en realidad es destruir la tabla y volverla a crear y no eliminar cada uno de los registros y puesto que eliminar y crear la tabla es mucho más rápido que eliminar todos los registros TRUNCATE TABLE puede ser una buena opción cuando se desea más velocidad en este proceso.

Otra diferencia importante tiene que ver con la misma característica de TRUNCATE TABLE de destruir y volver a crear la tabla, y es que reinicia todos los valores AUTO_INCREMENT de la tabla, es decir que si ibamos en el registro 5000, y usamos TRUNCATE TABLE al insertar un nuevo registro este volvería a ser el 1, mientras que en caso de usar DELETE FROM el AUTO_INCREMENT se conservaría intacto por lo que nuestro nuevo registro sería el número 5001 a pesar de ser el primero.

Así que depende de tus necesidades el cual utilizar.

You can leave a response, or trackback from your own site.

¡También puedes comentar con tu cuenta de FaceBook!

6 personas han comentado a “Eliminar todos los registros de una tabla en MySQL / Vaciar una tabla”

  1. Xpolito dice:

    Buena noche.

    Otro dato a agregar es que una sentencia TRUNCATE no dispara los TRIGGERS, mientras DELETE si.

    Leyendo encontré tambien que DELETE puede ser deshecho con ROLLBACK (o que no se ejecuta hasta un COMMIT que se yo!) y TRUNCATE no.

    Y por último que DELETE es DML y TRUNCATE es DD.

  2. ACLMS dice:

    Hola, Muchas Gracias, Venia Tiempo Buscándolo.

    Saludos,

  3. joel dice:

    porfavor quisiera que me ayuden a programar un boton con la cual pueda borrar los registro de un formulario pero tambien el de la tabla e estado intentando muchas maneras y no he podido. estoy trabajando con visualfoxpro 9.0 he estado intentando con estos pseudocodigos:

    SELECT 1
    DELETE
    *PACK
    thisform.command6.click
    thisform.text1.setfocus
    thisform.Refresh

    ayudenme porfavor quisiera ue me ayuden ya que soy nuevo en esto ok gracias….

    • RENE dice:

      para seleccionar la base de datos
      SELE 1 (solo si en algún lugar haz definido el área 1 de trabajo

      SINO
      use mibase (sino esta indexada)

      SINO
      use mibase index mibase

      luego puedes darle

      dele all
      pack

      SINO
      puedes darle
      ZAP

      RESUMEN
      forma 1
      use mibase index mibase
      dele all
      pack

      esto lo pones en el click del botón

      Recuerda que el ZAP sustituye las dos instrucciones dele all y pack

  4. joel dice:

    envianme a mi correo si alguien me quiere ayudar en el comentario anterior (trust_esteban9999@hotmail.com) …

    si no fuera mucho pedir me podrian decir a que pagina me puedo inscribir para con versar con los expertos en informatica e intertcambiar opiniones …. gracias

  5. Raul dice:

    Si quieres volver el AUTO_INCREMENT a 1, luego de realizar un DELETE FROM mi_tabla; debes ejecutar un ALTER TABLE mi_tabla AUTO_INCREMENT = 1;

Seguro tienes algo que comentar ¡Anímate que es gratis!