DROP TABLE (Deutsch)

Syntax

DROP TABLE tbl_name ... 

Beschreibung

DROP TABLE entfernt eine oder mehrere Tabellen. Sie müssen die DROP privilegefür jede Tabelle haben. Alle Tabellendaten und die Tabellendefinition werden entfernt, sowie Trigger, die der Tabelle zugeordnet sind, also becareful mit dieser Anweisung! Wenn eine der in der Argumentliste benannten Tabellen nicht vorhanden ist, gibt MariaDB einen Fehler zurück, der namentlich angibt, welche nicht vorhandenen Tablesit nicht gelöscht werden konnten, aber es werden auch alle Tabellen in der Liste gelöscht, die nicht vorhanden sind.,

Wichtig: Wenn eine Tabelle gelöscht wird, werden Benutzerrechte in der Tabelle nicht automatisch gelöscht. Finden Sie GEWÄHREN.

Wenn ein anderer Thread die Tabelle in einer expliziten Transaktion oder einer Autocommit-Transaktion verwendet, erhält der Thread eine Metadatensperre (MDL) für die Tabelle. DieDROP TABLE Anweisung wartet im Thread-Status „Waiting for table metadata lock“, bis die MDL freigegeben wird. MDLs werden in folgenden Fällen freigegeben:

  • Wenn eine MDL in einer expliziten Transaktion erworben wird, dann wird die MDL freigegeben, wenn die Transaktion endet.,
  • Wenn eine MDL in einer Autocommit-Transaktion erworben wird, wird die MDL freigegeben, wenn die Anweisung endet.
  • Transaktions-und Nicht-Transaktions-Tabellen werden gleich behandelt.

Beachten Sie, dass DROP TABLE für eine partitionierte Tabelle die Tabledefinition, alle Partitionen und alle Daten, die in diesen Partitionen gespeichert wurden, dauerhaft entfernt. Es entfernt auch die Partitionierungsdefinition (.par) fileassociated mit der Tabelle gelöscht.

Für jede referenzierte Tabelle löscht DROP TABLE eine temporäre Tabelle mit diesem Namen, falls vorhanden., Wenn es nicht existiert und das Schlüsselwort TEMPORARY nicht verwendet wird, wird eine nicht temporäre Tabelle mit demselben Namen gelöscht, falls vorhanden. Das Schlüsselwort TEMPORARY stellt sicher, dass eine nicht temporäre Tabelle nicht versehentlich gelöscht wird.

Verwenden Sie IF EXISTS, um zu verhindern, dass bei Tabellen, die nicht vorhanden sind, ein Fehler auftritt. Bei Verwendung von IF EXISTS wird für jede nicht vorhandene Tabelle eineNOTEgeneriert. Siehe WARNUNGEN ANZEIGEN.

Wenn ein Fremdschlüssel auf diese Tabelle verweist, kann die Tabelle nicht gelöscht werden., In diesem Fall muss zuerst der Fremdschlüssel fallen gelassen werden.

RESTRICT und CASCADE können die Portierung von anderen Datenbanksystemen erleichtern. In MariaDB, tun Sie nichts.

Der Kommentar vor den Tabellennamen (/*COMMENT TO SAVE*/) wird im Binärprotokoll gespeichert. Diese Funktion kann von Replikationstools zum Senden ihrer internen Nachrichten verwendet werden.

Es ist möglich, Tabellennamen als db_nameanzugeben.tab_name. Dies ist nützlich, um Tabellen aus mehreren Datenbanken mit einer Anweisung zu löschen., Siehe Id Qualifier für details.

Die DROP-Berechtigung ist erforderlich, um DROP TABLE für nicht temporäre Tabellen zu verwenden. Für temporäre Tabellen ist keine Berechtigung erforderlich, da solche Tabellen nur für die aktuelle Sitzung sichtbar sind.

Hinweis: DROP TABLE schreibt die aktuelle aktive Transaktion automatisch fest,es sei denn, Sie verwenden das Schlüsselwort TEMPORARY.

MariaDB ab 10.5.4

Ab MariaDB 10.5.,4, DROP TABLE löscht zuverlässig Tabellenreste in einer Speicher-Engine, auch wenn die Datei .frm fehlt. Bis dahin würde eine fehlende .frm Datei dazu führen, dass die Anweisung fehlschlägt.

MariaDB ab 10.3.1

WAIT/NOWAIT

die lock wait timeout. Siehe WARTEN und JETZT WARTEN.

DROP TABLE-in replication

DROP TABLE hat die folgenden Eigenschaften bei der Replikation:

  • DROP TABLE IF EXISTS werden immer protokolliert.,
  • TABELLE LÖSCHEN ohne FALLS VORHANDEN für nicht vorhandene Tabellen wird nicht in das Binärprotokoll geschrieben.
  • TEMPORÄRE Tabellen werden im Protokoll mit TEMPORÄREvorangestellt. Diese Tropfen werden nur protokolliert, wenn Anweisung oder Mischmodus Replikation ausgeführt wird.,
  • Eine DROP TABLE – Anweisung kann mit bis zu 3 verschiedenen DROP – Anweisungen protokolliert werden:
    • DROP TEMPORARY TABLE list_of_non_transactional_temporary_tables
    • LÖSCHEN SIE die TEMPORÄRE TABELLE list_of_transactional_temporary_tables
    • LÖSCHEN SIE die TABELLE list_of_normal_tables

Ab MariaDB 10.0.,8, DROP TABLE auf dem Master wird auf dem Slave als DROP TABLE behandelt, FALLS VORHANDEN. Sie können dies ändern, indem Sie slave-ddl-exec-mode auf STRICT.

Löschen eines internen #sql -… Tabelle

Wenn der mysqld-Prozess während einer ALTER TABLE beendet wird, finden Sie möglicherweise eine Tabelle mit dem Namen #sql -… in Ihrem Datenverzeichnis. In MariaDB 10.3 werden InnoDB-Tabellen mit diesem Präfix automatisch gelöscht. startup.In MariaDB 10.4 Wir stellen sicher, dass diese temporären Tabellen immer automatisch gelöscht werden.,

Wenn Sie eine dieser Tabellen explizit löschen möchten, können Sie dies mithilfe der folgenden Syntax tun:

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

Wenn Sie eine ALTER TABLE…ALGORITHM=INPLACE ausführen, die die Tabelle neu erstellt, erstellt InnoDB eine interne #sql-ib – Tabelle. Für diese Tabellen wird die.frm – Datei als etwas anderes bezeichnet. Um eine solche Tabelle nach einem Serverabsturz zu löschen, müssen Sie die #sql*.frm – Datei so umbenennen, dass sie mit der #sql-ib*.ibd – Datei übereinstimmt.,

Alle Tabellen in einer Datenbank löschen

Der beste Weg, alle Tabellen in einer Datenbank zu löschen, besteht darin, DROP DATABASE, wodurch die Datenbank selbst und alle Tabellen darin gelöscht werden.

Wenn Sie jedoch alle Tabellen in der Datenbank löschen möchten, aber auch die Datenbank selbst und andere Nicht-Tabellenobjekte darin behalten möchten, müssen Sie DROP TABLE ausführen, um jede einzelne Tabelle zu löschen. Sie können diese DROP TABLE – Befehle erstellen, indem Sie die TABLES – Tabelle in der information_schema – Datenbank abfragen., Beispiel:

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

Beispiele

DROP TABLE Employees, Customers;

Hinweise

Beachten Sie, dass DROP TABLE sowohl Tabellen als auch Sequenzen löschen kann. Dies geschieht hauptsächlich, um alten Tools wie mysqldump die Arbeit mit Sequenzen zu ermöglichen.

Siehe Auch

  • CREATE TABLE
  • ALTER TABLE
  • SHOW CREATE TABLE
  • DROP SEQUENCE
  • Variable slave-ddl-exec-Modus.

Leave a Comment