Maison  >  Article  >  base de données  >  mysql avancé (vingt et un) supprimant les données de la table

mysql avancé (vingt et un) supprimant les données de la table

黄舟
黄舟original
2017-02-11 10:45:251504parcourir

MySQL supprime les données de la table

Il existe deux méthodes pour supprimer des données dans MySQL, l'une est l'instruction DELETE et l'autre est l'instruction TRUNCATE TABLE. L'instruction DELETE peut sélectionner les enregistrements à supprimer via WHERE. L’utilisation de TRUNCATE TABLE supprimera tous les enregistrements de la table. Par conséquent, l’instruction DELETE est plus flexible.

Si vous souhaitez effacer tous les enregistrements du tableau, vous pouvez utiliser les deux méthodes suivantes :

DELETE FROM table1
       TRUNCATE TABLE table1
Où se trouve TABLE dans le deuxième enregistrement facultatif.

Si vous souhaitez supprimer certains enregistrements de la table, vous ne pouvez utiliser que l'instruction DELETE.

Si DELETE n'ajoute pas de clause WHERE, alors c'est la même chose que TRUNCATE TABLE, mais ils ont une différence, c'est-à-dire que DELETE peut renvoyer le nombre d'enregistrements supprimés, tandis que TRUNCATE TABLE renvoie 0 .

S'il y a un champ d'auto-incrémentation dans une table, après avoir utilisé TRUNCATE TABLE et DELETE sans clause WHERE pour supprimer tous les enregistrements, le champ d'auto-incrémentation restaurera la valeur de départ à 1. Si vous ne voulez pas faire cela. Si c'est le cas, vous pouvez ajouter un WHERE permanent à l'instruction DELETE, tel que WHERE 1 ou WHERE true.

       DELETE FROM table1 WHERE ...;

L'instruction ci-dessus analysera chaque enregistrement une fois exécutée. Mais cela ne se compare pas car la condition WHERE est toujours vraie. Bien que cela puisse maintenir la valeur maximale d'auto-incrémentation, puisqu'il analyse tous les enregistrements, son coût d'exécution est bien supérieur à DELETE sans clause WHERE.

La plus grande différence entre DELETE et TRUNCATE TABLE est que DELETE peut sélectionner les enregistrements à supprimer via l'instruction WHERE, mais la vitesse d'exécution n'est pas rapide.

      DELETE FROM table1 WHERE 1;
Une fois la troncature supprimée, le journal MySQL ne sera pas enregistré et les données ne pourront pas être restaurées. L'effet de la suppression est un peu comme supprimer tous les enregistrements de la table mysql un par un jusqu'à ce que la suppression soit terminée, tandis que tronquer équivaut à conserver la structure de la table mysql et à recréer la table. Tous les états sont équivalents à un. nouveau tableau. Il peut également renvoyer le nombre d'enregistrements supprimés. TRUNCATE TABLE ne peut pas supprimer les enregistrements spécifiés et ne peut pas renvoyer les enregistrements supprimés. Mais il s'exécute très rapidement.


Contrairement aux instructions SQL standard, DELETE prend en charge les clauses ORDER BY et LIMIT Grâce à ces deux clauses, nous pouvons mieux contrôler les enregistrements à supprimer. Par exemple, lorsque nous souhaitons supprimer uniquement une partie des enregistrements filtrés par la clause WHERE, nous pouvons utiliser LIMIT. Si nous souhaitons supprimer les derniers enregistrements, nous pouvons utiliser ORDER BY et LIMIT ensemble. Supposons que nous souhaitions supprimer les 6 premiers enregistrements de la table des utilisateurs dont le nom est égal à "Mike". Vous pouvez utiliser l'instruction DELETE suivante :

Généralement, MySQL ne sait pas lesquels des 6 enregistrements supprimés sont. Pour plus de sécurité, nous pouvons utiliser ORDER BY pour trier les enregistrements.

Beaux textes et images
      DELETE FROM users WHERE name = 'Mike' LIMIT 6;


      DELETE FROM users WHERE name = 'Mike' ORDER BY id DESC LIMIT 6;

Ce qui précède est le contenu de MySQL Advanced (21) supprimant les données de la table, plus Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn