DROP TABLE (Čeština)

Syntax

DROP TABLE tbl_name ... 

popis

DROP TABLE odstraní jednu nebo více tabulek. Musíte mít DROP privilegefor každé tabulce. Všechna data tabulky a definice tabulky jsou odstraněny, stejně jako spouštěče spojené s tabulkou, takžepečlivý s tímto Prohlášením! Pokud některý z tabulek uvedených v seznamu argumentů donot existují, MariaDB vrátí chybu označující podle názvu, který neexistující tabulkynemohl klesnout, ale také klesne všechny tabulky v seznamu, který doexist.,

důležité: když je tabulka vynechána, uživatelská oprávnění na stole nejsou automaticky vynechána. Viz GRANT.

pokud jiný podproces používá tabulku v explicitní transakci nebo transakci autocommit, získá vlákno na tabulce zámek metadat (MDL). Příkaz DROP TABLE bude čekat ve stavu vlákna „čekání na zámek metadat tabulky“, dokud nebude MDL uvolněn. MDL jsou uvolňovány v následujících případech:

  • pokud je MDL získán v explicitní transakci, bude MDL uvolněn po ukončení transakce.,
  • pokud je MDL získán v transakci autocommit, bude MDL uvolněn po ukončení příkazu.
  • transakční a transakční tabulky jsou zpracovány stejně.

Všimněte si, že pro tabulku oddílů, DROP TABLE trvale odstraňuje tabledefinition, všechny jeho oddíly, a všechna data, která byla uložena kandidátské oddíly. Odstraňuje také definici rozdělení (.par) fileasociated with the drop table.

pro každou odkazovanou tabulkuDROP TABLE upustí dočasnou tabulku s tímto názvem, pokud existuje., Pokud neexistuje a klíčové slovoTEMPORARY se nepoužívá, klesne Dočasná tabulka se stejným názvem, pokud existuje. Klíčové slovoTEMPORARY zajišťuje, že dočasná tabulka nebude náhodně vynechána.

použijte IF EXISTS, abyste zabránili výskytu chyby u tabulek, které neexistují. NOTE je generován pro každou neexistující tabulku při použitíIF EXISTS. Viz zobrazit varování.

Pokud se na tuto tabulku odkazuje cizí klíč, nelze tabulku vynechat., V tomto případě je nutné nejprve vynechat cizí klíč.

RESTRICT a CASCADE mohou usnadnit Portování z jiných databázových systémů. V Mariadbu nic nedělají.

komentář před názvy tabulek (/*COMMENT TO SAVE*/) je uložen v binárním protokolu. Tuto funkci mohou replikační nástroje použít k odesílání interních zpráv.

je možné zadat názvy tabulek jako db_name.tab_name. To je užitečné pro odstranění tabulek z více databází s jedním příkazem., Podrobnosti viz identifikátor kvalifikace.

oprávnění DROP je vyžadováno pro použití DROP TABLE na dočasných tabulkách. U dočasných tabulek není vyžadováno žádné oprávnění, protože tyto tabulky jsou viditelné pouze pro aktuální relaci.

Poznámka: DROP TABLE automaticky provede aktuální aktivní transakci,pokud nepoužíváte Klíčové slovo TEMPORARY.

MariaDB počínaje 10.5.4

od MariaDB 10.5.,4, DROP TABLE spolehlivě odstraní stolu zbytky uvnitř storage engine, i když .frm chybí soubor. Předtím by chybějící.frm soubor vedl k selhání příkazu.

MariaDB počínaje 10.3.1

WAIT / NOWAIT

Nastavte časový limit čekání na zámek. Uvidíme, jak to dopadne.

DROP TABLE v replikace

DROP TABLE má následující vlastnosti replikace:

  • DROP TABLE, POKUD EXISTUJE jsou vždy zaznamenány.,
  • DROP TABLE bez pokud existuje pro tabulky, které neexistují, nejsou zapsány do binárního protokolu.
  • dočasné tabulky jsou v protokolu předřazeny s dočasné . Tyto kapky jsou zaznamenány pouze při spuštění příkazu nebo replikaci smíšeného režimu.,
  • one DROP TABLE výpis lze zaznamenat až s 3 různými DROP příkazy:
    • DROP Dočasná tabulka list_of_non_transactional_temporary_tables
    • drop temporary table list_of_transactional_temporary_tables
    • drop table list_of_normal_tables

od MariaDB 10.0.,8, DROP TABLE na master je zacházeno na otroka jako DROP TABLE, POKUD EXISTUJE. Můžete to změnit nastavením režimu slave-ddl-exec na STRICT.

upuštění interního # sql-… Tabulka

Pokud je proces mysqld zabit během změny tabulky, můžete najít tabulku s názvem #sql-… ve vašem datovém adresáři. V MariaDB 10.3 se tabulky InnoDB s touto předponou automaticky odstraní během startup.In MariaDB 10.4 zajistíme, aby tyto dočasné tabulky byly vždy automaticky smazány.,

Chcete-li jednu z těchto tabulek explicitně smazat, můžete tak učinit pomocí následující syntaxe:

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

při spuštění ALTER TABLE…ALGORITHM=INPLACE, která obnoví tabulku, InnoDB vytvoří interní #sql-ib tabulka. Pro tyto tabulky bude soubor .frm nazýván něčím jiným. Chcete-li takovou tabulku po selhání serveru vynechat, musíte přejmenovat soubor #sql*.frm tak, aby odpovídal souboru #sql-ib*.ibd.,

Vrácení Všech Tabulek v Databázi

nejlepší způsob, jak k poklesu všech tabulek v databázi je vykonáváním DROP DATABASE, který se bude pokles samotné databáze a všechny tabulky.

Pokud však chcete všechny tabulky v databázi vynechat, ale chcete v ní také zachovat samotnou databázi a jiné objekty, které nejsou tabulkami, musíte provést DROP TABLE, abyste upustili od každé jednotlivé tabulky. Tyto příkazy DROP TABLE můžete vytvořit dotazem naTABLES v databázi information_schema., Například:

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

Příklady

DROP TABLE Employees, Customers;

Poznámky

dávejte si Pozor, aby DROP TABLE může klesnout obou tabulek a sekvencí. To se provádí hlavně proto, aby staré nástroje, jako je mysqldump, pracovaly se sekvencemi.

Viz také

  • vytvořit tabulku
  • ALTER TABLE
  • zobrazit vytvořit tabulku
  • drop SEQUENCE
  • variabilní slave-DDL-exec-mode.

Leave a Comment