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 !