DROP TABLE (Français)

Syntaxe

DROP TABLE tbl_name ... 

Description

DROP TABLE supprime une ou plusieurs tables. Vous devez avoir le privilègeDROP pour chaque table. Toutes les données de table et la définition de table sont supprimées, ainsi que les déclencheurs associés à la table, donc attention à cette instruction! Si L’une des tables nommées dans la liste d’arguments n’existe pas, MariaDB renvoie une erreur indiquant par nom quelles tables non existantes n’ont pas pu être supprimées, mais elle supprime également toutes les tables de la liste qui existent.,

Important: lorsqu’une table est supprimée, les privilèges utilisateur sur la table ne sont pas automatiquement supprimés. Voir de SUBVENTION.

Si un autre thread utilise la table dans une transaction explicite ou une transaction autocommit, alors le thread acquiert un verrou de métadonnées (MDL) sur la table. L’instructionDROP TABLE attendra dans l’état de thread « Waiting for table metadata lock » jusqu’à ce que la MDL soit libérée. Les MDL sont libérées dans les cas suivants:

  • Si une MDL est acquise dans une transaction explicite, la MDL sera libérée à la fin de la transaction.,
  • Si une MDL est acquise dans une transaction autocommit, la MDL sera libérée à la fin de l’instruction.
  • Les tables transactionnelles et non transactionnelles sont gérées de la même manière.

notez que pour une table partitionnée,DROP TABLE supprime définitivement la définition de table, toutes ses partitions et toutes les données stockées dans ces partitions. Il supprime également la définition de partitionnement (.par) fileassocié à la table abandonnée.

pour chaque table référencée,DROP TABLE supprime une table temporaire portant ce nom, si elle existe., S’il n’existe pas et que le mot-clé TEMPORARY n’est pas utilisé, il supprime une table non temporaire portant le même nom, si elle existe. Le mot cléTEMPORARY garantit qu’une table non temporaire ne sera pas accidentellement supprimée.

utilisezIF EXISTS pour éviter qu’une erreur ne se produise pour les tables qui n’existent pas. NOTE est généré pour chaque table inexistante lors de l’utilisation deIF EXISTS. Voir afficher les Avertissements.

Si une clé étrangère fait référence à cette table, la table ne peut pas être supprimée., Dans ce cas, il est nécessaire de laisser tomber la clé étrangère en premier.

RESTRICT et CASCADE sont autorisés à faire de portage à partir d’autres systèmes de base de données plus facile. À MariaDB, ils ne font rien.

le commentaire avant les noms de table (/*COMMENT TO SAVE*/) est stocké dans le journal binaire. Cette fonctionnalité peut être utilisée par les outils de réplication pour envoyer leurs messages internes.

Il est possible de spécifier des noms de table commedb_name.tab_name. Ceci est utile pour supprimer des tables de plusieurs bases de données avec une seule instruction., Voir qualificatifs D’identificateur pour plus de détails.

le privilège DROP est requis pour utiliser DROP TABLE sur des tables non temporaires. Pour les tables temporaires, aucun privilège n’est requis, car ces tables ne sont visibles que pour la session en cours.

Remarque:DROP TABLE valide automatiquement la transaction active en cours,sauf si vous utilisez le mot-cléTEMPORARY.

MariaDB commençant par 10.5.4

à partir de MariaDB 10.5.,4, DROP TABLE supprime de manière fiable les restes de table dans un moteur de stockage même si le fichier .frm est manquant. Avant cela, un fichier .frm manquant entraînerait l’échec de l’instruction.

MariaDB à partir de 10.3.1

WAIT/NOWAIT

définissez le délai d’attente de verrouillage. Voir attendre et NOWAIT.

DROP TABLE dans la réplication

DROP TABLE possède les caractéristiques suivantes dans la réplication:

  • DROP TABLE if EXISTS sont toujours connectés.,
  • DROP TABLE sans si existe pour les tables qui n’existent pas ne sont pas écrites dans le journal binaire.
  • suppression detemporaire les tables sont préfixées dans le journal avectemporaire . Ces suppressions ne sont enregistrées que lors de l’exécution d’une instruction ou d’une réplication en mode mixte.,
  • Un DROP TABLE déclaration peut être connecté avec jusqu’à 3 différents GOUTTE déclarations:
    • DROP TABLE TEMPORAIRE list_of_non_transactional_temporary_tables
    • DROP TABLE TEMPORAIRE list_of_transactional_temporary_tables
    • DROP TABLE list_of_normal_tables

À partir de MariaDB 10.0.,8, table de dépôt sur le maître est traité sur l’esclave comme table de dépôt si existe. Vous pouvez changer cela en définissant slave-DDL-exec-mode sur STRICT .

suppression D’un #sql-interne… Table

Si le processus mysqld est tué pendant une table ALTER, vous pouvez trouver une table nommée #sql-… dans votre répertoire de données. Dans MariaDB 10.3, les tables InnoDB avec ce préfixe seront automatiquement supprimées pendant startup.In MariaDB 10.4 nous veillerons à ce que ces tables temporaires soient toujours supprimées automatiquement.,

Si vous souhaitez supprimer l’une de ces tables explicitement, vous pouvez le faire en utilisant la syntaxe suivante:

DROP TABLE `#mysql50##sql-...`;

Lors de l’exécution d’un ALTER TABLE…ALGORITHM=INPLACE qui recrée la table, InnoDB va créer un #sql-ib tableau. Pour ces tables, le fichier.frm sera appelé autre chose. Pour supprimer une telle table après un plantage du serveur, vous devez renommer le fichier#sql*.frm pour qu’il corresponde au fichier#sql-ib*.ibd.,

supprimer toutes les Tables d’une base de données

la meilleure façon de supprimer toutes les tables d’une base de données est d’exécuterDROP DATABASE, qui supprimera la base de données elle-même et toutes les tables qu’elle contient.

cependant, si vous souhaitez supprimer toutes les tables de la base de données, mais que vous souhaitez également conserver la base de données elle-même et tout autre objet non-table, vous devez exécuterDROP TABLE pour supprimer chaque table individuelle. Vous pouvez construire ces commandesDROP TABLE en interrogeant la tableTABLES dans la base de donnéesinformation_schema., Par exemple:

SELECT CONCAT('DROP TABLE IF EXISTS `', TABLE_SCHEMA, '`.`', TABLE_NAME, '`;')FROM information_schema.TABLESWHERE TABLE_SCHEMA = 'mydb';

Exemples

DROP TABLE Employees, Customers;

Notes

Attention, DROP TABLE à la chute de tables et séquences. Ceci est principalement fait pour permettre aux anciens outils comme mysqldump de travailler avec des séquences.

Voir Aussi

  • CREATE TABLE
  • ALTER TABLE
  • SHOW CREATE TABLE
  • SÉQUENCE de largage
  • Variable esclave-ddl-exec-mode.

Leave a Comment