Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment tronquer une table dans MySQL

Parfois, vous devrez peut-être supprimer toutes les lignes d'une table dans la base de données MySQL. Il existe plusieurs façons de le faire en utilisant les instructions TRUNCATE TABLE, DROP TABLE et DELETE. Dans cet article, nous verrons comment tronquer une table dans MySQL à l'aide de l'instruction MySQL TRUNCATE TABLE.

Comment tronquer une table dans MySQL

Voici comment tronquer une table dans MySQL à l'aide de l'instruction TRUNCATE TABLE. Voici la syntaxe de l'instruction MySQL TRUNCATE TABLE.

TRUNCATE [TABLE] table_name;

Dans la requête ci-dessus, vous devez spécifier le nom de votre table à tronquer, à la place de table_name.

Le mot clé TABLE est facultatif après TRUNCATE.

Lecture bonus :MySQL DROP VIEW

Exemples MySQL TRUNCATE TABLE

Disons que vous avez la table commandes dans 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 |
+------+------------+--------+

Voici la requête SQL pour tronquer la table dans MySQL.

mysql> truncate table daily_orders;

mysql> select * from daily_orders;
Empty set (0.00 sec)

Lecture bonus :Comment créer un index dans MySQL

MySQL TRUNCATE vs DELETE

TRUNCATE TABLE est similaire à l'instruction DELETE dans MySQL. Cependant, il existe quelques différences essentielles. Voici la différence entre TRUNCATE et DELETE dans MySQL.

SUPPRIMER MySQL

  • DELETE est une instruction de langage de manipulation de données (DML). Il supprime une ligne à la fois. Il est donc exécuté en utilisant le verrouillage de ligne, et chaque ligne est verrouillée pour la suppression
  • Les opérations DELETE sont enregistrées
  • Vous pouvez spécifier la clause WHERE dans l'instruction DELETE pour supprimer uniquement des lignes spécifiques de votre table
  • DELETE est plus lent que truncate car les opérations de suppression sont enregistrées

TRONQUER MySQL

  • TRUNCATE est une commande DDL (Data Description Language) qui verrouille la table pour la suppression, mais pas les lignes.
  • TRUNCATE supprime toutes les données de la table. Vous ne pouvez donc pas spécifier la clause WHERE dans l'instruction TRUNCATE.
  • Les opérations TRUNCATE ne sont pas enregistrées et sont donc beaucoup plus rapides que l'instruction DELETE.

La restauration est possible dans les instructions DELETE et TRUNCATE.

Lecture bonus :comment créer une procédure stockée dans MySQL

Comment tronquer une table avec une clé étrangère

Si votre table a une contrainte de clé étrangère, lorsque vous exécutez l'instruction TRUNCATE pour cette table, vous obtiendrez l'erreur suivante.

ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key 
constraint fails

Vous devez donc vous connecter à MySQL et désactiver les vérifications de clé étrangère avant de tronquer les tables, en utilisant la commande suivante

SET FOREIGN_KEY_CHECKS=0;

Après avoir tronqué les tables, réactivez les vérifications de clé étrangère

SET FOREIGN_KEY_CHECKS=1;

Lecture bonus :comment créer un utilisateur dans MySQL

Comment tronquer toutes les tables dans MySQL

MySQL TRUNCATE TABLE vous permet de supprimer une seule table à la fois. Ainsi, si vous souhaitez supprimer plusieurs tables, vous devez émettre des commandes TRUNCATE TABLE distinctes. Voici un exemple pour tronquer plusieurs tables table1, table2, table3, …

mysql> TRUNCATE TABLE table1;
mysql> TRUNCATE TABLE table2;
mysql> TRUNCATE TABLE table3;

Lecture bonus :comment créer une base de données dans MySQL

Voici une requête SQL pour générer plusieurs instructions TRUNCATE TABLE, en utilisant les noms de table de votre base de données. Remplacez DATABASE_NAME dans la requête suivante par le nom de votre base de données.

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;                               |
+------------------------------------------------------------+

Utilisez le résultat de la requête ci-dessus pour tronquer toutes les tables de la base de données. J'espère que vous pouvez maintenant tronquer la table dans MySQL

Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !