sql >> Base de Datos >  >> RDS >> Mysql

Cómo truncar una tabla en MySQL

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!