· Andrés Ledo · MySQL  · Lectura en 4 min

Cómo usar el comando TRUNCATE TABLE en MySQL

¿Listo para dominar el comando TRUNCATE en MySQL? ¡Esta guía exclusiva te brinda todos los detalles, tips y precauciones para convertirte en un experto!

¿Listo para dominar el comando TRUNCATE en MySQL? ¡Esta guía exclusiva te brinda todos los detalles, tips y precauciones para convertirte en un experto!

El comando TRUNCATE TABLE en MySQL es una forma rápida y eficiente de eliminar todos los datos de una tabla. En este artículo, te explicaré qué es el comando TRUNCATE TABLE, cómo funciona, cuáles son sus ventajas y desventajas, y cómo usarlo con ejemplos prácticos.

Índice

¿Qué es el comando TRUNCATE TABLE?

El comando TRUNCATE TABLE es una sentencia SQL que permite borrar todos los datos de una tabla. Lógicamente, el comando TRUNCATE TABLE es similar a un comando DELETE sin una cláusula WHERE que elimina todas las filas de una tabla, o a una secuencia de comandos DROP TABLE y CREATE TABLE.

Sin embargo, el comando TRUNCATE TABLE es más eficiente que el comando DELETE porque elimina y recrea la tabla en lugar de borrar las filas una por una. Esto hace que el comando TRUNCATE TABLE sea más rápido y consuma menos recursos.

Aquí está la sintaxis básica del comando TRUNCATE TABLE:

TRUNCATE [TABLE] nombre_de_tabla;

En esta sintaxis, se especifica el nombre de la tabla de la que se quiere eliminar todos los datos después de las palabras clave TRUNCATE TABLE. La palabra clave TABLE es opcional, pero es una buena práctica usarla para distinguir entre el comando TRUNCATE TABLE y la función TRUNCATE().

¿Cómo funciona el comando TRUNCATE TABLE?

El comando TRUNCATE TABLE funciona de la siguiente manera:

  • Primero, verifica si hay alguna restricción de clave externa (FOREIGN KEY) desde otras tablas que hagan referencia a la tabla que se quiere truncar. Si hay alguna, el comando TRUNCATE TABLE fallará y devolverá un error.

  • Segundo, elimina la tabla y libera el espacio ocupado por los datos y los índices.

  • Tercero, crea una nueva tabla con la misma estructura y definición que la tabla original.

  • Cuarto, restablece el valor en la columna AUTO_INCREMENT a su valor inicial si la tabla tiene una columna AUTO_INCREMENT.

  • Quinto, devuelve un mensaje indicando que la operación se ha completado con éxito.

El comando TRUNCATE TABLE no dispara los disparadores (triggers) asociados a la tabla que se está truncando. Además, el número de filas afectadas por el comando TRUNCATE TABLE es 0, lo que debe interpretarse como ninguna información.

¿Cuáles son las ventajas y desventajas del comando TRUNCATE TABLE?

El comando TRUNCATE TABLE tiene algunas ventajas y desventajas que hay que tener en cuenta antes de usarlo. A continuación, se enumeran algunas de ellas:

Ventajas

  • Es más rápido y eficiente que el comando DELETE porque elimina y recrea la tabla en lugar de borrar las filas una por una.

  • Libera el espacio ocupado por los datos y los índices de forma inmediata.

  • Restablece el valor en la columna AUTO_INCREMENT a su valor inicial si la tabla tiene una columna AUTO_INCREMENT.

Desventajas

  • No se puede usar con tablas que tengan restricciones de clave externa (FOREIGN KEY) desde otras tablas.

  • No se puede deshacer (rollback) porque causa un compromiso implícito (implicit commit).

  • No dispara los disparadores (triggers) asociados a la tabla que se está truncando.

  • No devuelve el número de filas afectadas por la operación.

¿Cómo usar el comando TRUNCATE TABLE con ejemplos prácticos?

Para ilustrar cómo usar el comando TRUNCATE TABLE con ejemplos prácticos, vamos a crear una nueva tabla llamada libros para la demostración:

CREATE TABLE libros (
  id INT AUTO_INCREMENT PRIMARY KEY,
  titulo VARCHAR(255) NOT NULL
) ENGINE = INNODB;

A continuación, vamos a insertar algunos datos ficticios en la tabla libros usando el siguiente procedimiento almacenado:

DELIMITER $$
CREATE PROCEDURE cargar_datos_libros(IN num INT(4))
BEGIN
  DECLARE contador INT(4) DEFAULT 0;
  DECLARE titulo_libro VARCHAR(255) DEFAULT '';
  
  WHILE contador < num DO
    SET titulo_libro = CONCAT('Título del libro #', contador);
    SET contador = contador + 1;
    INSERT INTO libros (titulo) VALUES (titulo_libro);
  END WHILE;
END $$
DELIMITER ;

Luego, vamos a cargar 10.000 filas en la tabla libros. Esto puede tardar un poco.

CALL cargar_datos_libros(10000);

Después, vamos a comprobar los datos en la tabla libros:

SELECT * FROM libros;

Finalmente, vamos a usar el comando TRUNCATE TABLE para eliminar todos los datos de la tabla libros:

TRUNCATE TABLE libros;

Si volvemos a consultar la tabla libros, veremos que está vacía y que el valor de la columna AUTO_INCREMENT se ha restablecido a 1.


En este artículo, te he explicado qué es el comando TRUNCATE TABLE en MySQL, cómo funciona, cuáles son sus ventajas y desventajas, y cómo usarlo con ejemplos prácticos. Espero que te haya sido útil y que hayas aprendido algo nuevo.

Si te ha gustado este artículo, compártelo con tus amigos y déjame un comentario. También puedes suscribirte a mi blog para recibir más artículos sobre MySQL y otros temas relacionados con el desarrollo web.

Articulos relacionados:

Este artículo forma parte del tutorial de MySQL.

    Compartir
    Volver al blog

    Artículos relacionados

    Ver todos los artículos »
    PHP Headers guía básica

    PHP Headers guía básica

    Domina la función header() en PHP para manipular las cabeceras HTTP en tus scripts. Aprende a gestionar redirecciones, tipos de contenido, caché y...

    Switch en C#: Guía Completa

    Switch en C#: Guía Completa

    La estructura switch ofrece una alternativa más limpia y organizada a múltiples if-else encadenados, permitiendo a los programadores gestionar varias...

    Cómo usar los comentarios en PHP

    Cómo usar los comentarios en PHP

    Mejora tu código PHP con nuestra guía definitiva sobre comentarios. ¡Descubre técnicas eficientes y buenas prácticas para llevar tus proyectos al...