A veces, es posible que deba eliminar todas las filas de una tabla en la base de datos MySQL. Hay varias formas de hacerlo utilizando las sentencias TRUNCATE TABLE, DROP TABLE y DELETE. En este artículo, veremos cómo truncar una tabla en MySQL usando la instrucción MySQL TRUNCATE TABLE.
Cómo truncar una tabla en MySQL
Aquí se explica cómo truncar una tabla en MySQL usando la instrucción TRUNCATE TABLE. Esta es la sintaxis de la instrucción MySQL TRUNCATE TABLE.
TRUNCATE [TABLE] table_name;
En la consulta anterior, debe especificar que el nombre de su tabla se trunque, en lugar de table_name.
La palabra clave TABLE es opcional después de TRUNCATE.
Lectura adicional:MySQL DROP VIEW
Ejemplos de TABLA TRUNCADA de MySQL
Digamos que tiene la tabla pedidos en MySQL.
mysql> create table daily_orders(id int, order_date date,amount int); mysql> insert into daily_orders(id, order_date, amount) values(1, '2020-07-01',250),(2,'2020-07-02',320), (3,'2020-07-03',450); mysql> select * from daily_orders; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2020-07-01 | 250 | | 2 | 2020-07-02 | 320 | | 3 | 2020-07-03 | 450 | +------+------------+--------+
Aquí está la consulta SQL para truncar la tabla en MySQL.
mysql> truncate table daily_orders; mysql> select * from daily_orders; Empty set (0.00 sec)
Lectura adicional:Cómo crear un índice en MySQL
MySQL TRUNCATE vs DELETE
TRUNCATE TABLE es similar a la declaración DELETE en MySQL. Sin embargo, hay algunas diferencias clave. Esta es la diferencia entre TRUNCATE y DELETE en MySQL.
ELIMINAR MySQL
- DELETE es una declaración de lenguaje de manipulación de datos (DML). Elimina una fila a la vez. Por lo tanto, se ejecuta mediante el bloqueo de fila y cada fila se bloquea para su eliminación
- Se registran las operaciones DELETE
- Puede especificar la cláusula WHERE en la declaración DELETE para eliminar solo filas específicas en su tabla
- DELETE es más lento que truncar ya que se registran las operaciones de eliminación
TRUNCADO de MySQL
- TRUNCATE es un comando de lenguaje de descripción de datos (DDL) que bloquea la tabla para su eliminación, pero no las filas.
- TRUNCATE elimina todos los datos de la tabla. Por lo tanto, no puede especificar la cláusula WHERE en la instrucción TRUNCATE.
- Las operaciones TRUNCATE no se registran y, por lo tanto, son mucho más rápidas que las declaraciones DELETE.
La reversión es posible en declaraciones DELETE y TRUNCATE.
Lectura adicional:Cómo crear un procedimiento almacenado en MySQL
Cómo truncar una tabla con clave externa
Si su tabla tiene una restricción de clave externa, cuando ejecute la instrucción TRUNCATE para esa tabla obtendrá el siguiente error.
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails
Por lo tanto, debe iniciar sesión en MySQL y deshabilitar las comprobaciones de clave externa antes de truncar tablas, utilizando el siguiente comando
SET FOREIGN_KEY_CHECKS=0;
Después de truncar las tablas, vuelva a habilitar las comprobaciones de clave externa
SET FOREIGN_KEY_CHECKS=1;
Lectura adicional:Cómo crear un usuario en MySQL
Cómo truncar todas las tablas en MySQL
MySQL TRUNCATE TABLE le permite eliminar solo una tabla a la vez. Entonces, si desea eliminar varias tablas, debe ejecutar comandos TRUNCATE TABLE por separado. Aquí hay un ejemplo para truncar varias tablas table1, table2, table3, …
mysql> TRUNCATE TABLE table1; mysql> TRUNCATE TABLE table2; mysql> TRUNCATE TABLE table3;
Lectura adicional:Cómo crear una base de datos en MySQL
Aquí hay una consulta SQL para generar múltiples sentencias TRUNCATE TABLE, usando los nombres de las tablas en su base de datos. Reemplace DATABASE_NAME en la siguiente consulta con el nombre de su base de datos.
mysql> SELECT Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES where table_schema in ('sample'); +------------------------------------------------------------+ | Concat('TRUNCATE TABLE ',table_schema,'.',TABLE_NAME, ';') | +------------------------------------------------------------+ | TRUNCATE TABLE sample.a; | | TRUNCATE TABLE sample.calendar; | | TRUNCATE TABLE sample.categories; | | TRUNCATE TABLE sample.daily_orders; | | TRUNCATE TABLE sample.login; | | TRUNCATE TABLE sample.meeting; | | TRUNCATE TABLE sample.order_status; | | TRUNCATE TABLE sample.orders; | | TRUNCATE TABLE sample.orders2; | | TRUNCATE TABLE sample.orders3; | | TRUNCATE TABLE sample.product_sales; | | TRUNCATE TABLE sample.products; | | TRUNCATE TABLE sample.sales; | | TRUNCATE TABLE sample.user_data; | | TRUNCATE TABLE sample.users; | +------------------------------------------------------------+
Use el resultado de la consulta anterior para truncar todas las tablas en la base de datos. Con suerte, ahora puedes truncar la tabla en MySQL
Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!