Dans MySQL, il existe un total de 3 méthodes de suppression : supprimer, tronquer et supprimer, et les scénarios d'utilisation et d'utilisation des trois sont complètement différents.
detele peut être utilisé pour supprimer tout ou partie des données d'un tableau. Sa syntaxe d'utilisation est la suivante :
delete from table_name [where...] [order by...] [limit...]
PS : Les commandes entre [] sont des commandes facultatives et peuvent être omises.
Si nous voulons supprimer les 3 meilleurs étudiants avec les scores en mathématiques les plus élevés dans la table des étudiants, nous pouvons utiliser le SQL suivant :
delete from student order by math desc limit 3;
Dans le moteur InnoDB, l'opération de suppression ne supprimez réellement les données. Au lieu de cela, les données sont marquées pour suppression et marquées comme supprimées. Nous pouvons tester et vérifier cela en définissant MySQL en mode de soumission non automatique. Le paramètre SQL pour le mode de validation non automatique est le suivant :
set autocommit=0;
Après cela, supprimez d'abord une donnée, puis utilisez l'opération de restauration, et enfin vérifiez si les données que nous avons supprimées auparavant existent toujours. Si les données existent toujours, cela signifie. delete n'est pas Les données sont vraiment supprimées, elles marquent simplement les données comme supprimées. Les résultats de la vérification SQL et de l'exécution sont comme indiqué dans la figure ci-dessous :
Dans le moteur InnoDB. , delete est utilisé pour tout supprimer. Après les données, la colonne d'auto-incrémentation ne sera pas réinitialisée à la valeur initiale. Nous pouvons le vérifier avec la commande suivante :
truncate L'effet d'exécution est similaire. à supprimer, et il est également utilisé pour supprimer toutes les données du tableau. Pour les données de ligne, sa syntaxe d'utilisation est la suivante :
truncate [table] table_name
La plus grande différence entre tronquer et supprimer en cours d'utilisation est que delete peut utiliser des expressions conditionnelles pour supprimer une partie des données, alors que tronquer ne peut pas ajouter d'expressions conditionnelles, il ne peut donc supprimer que toutes les données de ligne , par exemple, la troncature suivante signalera une erreur après l'ajout de la commande Where :
truncate semble supprimer uniquement les données de ligne, mais il s'agit d'une instruction DDL, c'est-à-dire le langage de définition de données. Le langage de définition de données est utilisé pour conserver les instructions structurelles pour le stockage des données, c'est donc différent de la commande delete. L'instruction delete appartient à DML, Langage de manipulation de données, utilisé pour exploiter les données. Pourquoi la troncature supprime-t-elle uniquement les données de ligne mais pas les données de colonne (champs, index, etc.) alors qu'il s'agit du langage DDL ? En effet, truncate crée essentiellement une nouvelle structure de table, puis supprime la table d'origine, elle appartient donc au langage DDL et non au langage DML.
truncate réinitialisera la colonne d'incrémentation automatique dans le moteur InnoDB, comme indiqué dans la commande suivante :
drop et les deux premiers les commandes suppriment uniquement la table Les données de ligne sont différentes. Drop supprimera ensemble les données de ligne et la structure de la table entière. Sa syntaxe est la suivante :
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [,tbl_name]
où TEMPORAIRE signifie table temporaire. Dans des circonstances normales, cette commande sera. ignoré.
Les exemples d'utilisation de drop sont les suivants :
En termes de récupération de données : la suppression peut récupérer les données supprimées, tandis que la troncature et la suppression ne peuvent pas récupérer les données supprimées.
Vitesse d'exécution : supprimer > tronquer >
En termes de suppression de données : drop supprime la table entière, y compris les données de ligne, les champs, les index et autres données, tandis que tronquer et drop supprime uniquement les données de ligne.
En termes d'ajout de conditions : delete peut utiliser des expressions Where pour ajouter des conditions de requête, tandis que tronquer et drop ne peuvent pas ajouter de conditions de requête Where.
Réinitialisation des colonnes à incrémentation automatique : dans le moteur InnoDB, truncate peut réinitialiser les colonnes à incrémentation automatique, mais la suppression ne peut pas réinitialiser les colonnes à incrémentation automatique.
delete et tronquer peuvent être utilisés pour supprimer les données de ligne dans la table, tandis que drop supprime la table entière. Les données supprimées incluent toutes les données de ligne, champs, index et autres données, parmi lesquelles delete supprime les données. . peut être récupéré, tandis que tronquer et supprimer ne sont pas récupérables, mais en termes d'efficacité d'exécution, les deux dernières méthodes de suppression présentent de grands avantages, donc la commande de suppression correspondante doit être sélectionnée en fonction du scénario réel. Bien sûr, tronquer et supprimer le sont. non récupérable. Soyez prudent lorsque vous utilisez la méthode de suppression de données.
【Recommandation associée : tutoriel vidéo mysql】
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!