DROP TABLE

syntaxis

DROP TABLE tbl_name ... 

Description

DROP TABLE verwijdert een of meer tabellen. U moet voor elke tabel de DROP privilegivefor hebben. Alle tabelgegevens en de tabeldefinitie worden verwijderd, evenals triggers die aan de tabel zijn gekoppeld, dus wees voorzichtig met deze verklaring! Als een van de tabellen in de lijst met argumenten niet bestaat, geeft MariaDB een fout terug die bij naam aangeeft welke niet-bestaande tablesit niet kon laten vallen, maar het laat ook alle tabellen in de lijst vallen die wel bestaan.,

belangrijk: wanneer een tabel wordt weggelaten, worden gebruikersrechten op de tabel niet automatisch weggelaten. Ga naar GRANT.

als een andere thread de tabel gebruikt in een expliciete transactie of een autocommit transactie, dan krijgt de thread een metadata lock (MDL) op de tabel. HetDROP TABLE statement zal wachten in de “Waiting for table metadata lock” thread status totdat de MDL is vrijgegeven. MDL ‘ s worden vrijgegeven in de volgende gevallen:

  • als een mdl wordt verworven in een expliciete transactie, dan zal de MDL worden vrijgegeven wanneer de transactie eindigt.,
  • als een mdl wordt verworven in een autocommit transactie, dan zal de MDL worden vrijgegeven wanneer het statement eindigt.
  • transactionele en niet-transactionele tabellen worden op dezelfde manier behandeld.

merk op dat Voor een gepartitioneerde tabel DROP TABLE permanent de tabledefinitie verwijdert, alle partities en alle gegevens die in deze partities waren opgeslagen. Het verwijdert ook de partitionering definitie (.par) bestand gekoppeld aan de gevallen tabel.

voor elke tabel waarnaar wordt verwezen,DROP TABLE laat een tijdelijke tabel met die naam vallen, indien deze bestaat., Als het niet bestaat en het TEMPORARY sleutelwoord niet wordt gebruikt, laat het een niet-tijdelijke tabel met dezelfde naam vallen, als het bestaat. HetTEMPORARY sleutelwoord zorgt ervoor dat een niet-tijdelijke tabel niet per ongeluk wordt verwijderd.

gebruik IF EXISTS om te voorkomen dat er een fout optreedt voor tabellen die niet bestaan. Een NOTE wordt gegenereerd voor elke niet-bestaande tabel wanneerIF EXISTSwordt gebruikt. Zie waarschuwingen weergeven.

als een buitenlandse sleutel naar deze tabel verwijst, kan de tabel niet worden weggelaten., In dit geval is het noodzakelijk om eerst de buitenlandse sleutel te laten vallen.

RESTRICT en CASCADE mogen porten van andere databasesystemen gemakkelijker maken. In MariaDB doen ze niets.

het commentaar voor de tabelnamen (/*COMMENT TO SAVE*/) wordt opgeslagen in het binaire logboek. Deze functie kan worden gebruikt door replicatiehulpmiddelen om hun interne berichten te verzenden.

Het is mogelijk om tabelnamen op te geven als db_name.tab_name. Dit is handig om tabellen uit meerdere databases te verwijderen met één statement., Zie Identifier Qualifiers voor details.

het DROP privilege is vereist om DROP TABLE op niet-tijdelijke tabellen te gebruiken. Voor tijdelijke tabellen is geen privilege vereist, omdat dergelijke tabellen alleen zichtbaar zijn voor de huidige sessie.

opmerking: DROP TABLE legt automatisch de huidige actieve transactie vast,tenzij u het sleutelwoord TEMPORARY gebruikt.

MariaDB beginnend met 10.5.4

van MariaDB 10.5.,4, DROP TABLE verwijdert op betrouwbare wijze tabelresten in een opslagengine, zelfs als het .frm – bestand ontbreekt. Daarvoor zou een ontbrekend .frm bestand resulteren in het falen van het statement.

MariaDB beginnend met 10.3.1

WAIT / NOWAIT

Stel de wachttijd voor vergrendelen in. Wacht en wacht.

DROP TABLE in replicatie

DROP TABLE heeft de volgende kenmerken in replicatie:

  • DROP TABLE IF EXISTS are always logged.,
  • DROP TABLE without IF EXISTS for tables which don ‘ t exists are not written to the binaire log.
  • Dropping van tijdelijk tabellen worden in het log voorafgegaan met tijdelijk. Deze druppels worden alleen geregistreerd bij het uitvoeren van statement of mixed mode replicatie.,
  • Een DROP TABLE instructie kan worden vastgelegd met maximaal 3 verschillende DROP instructies:
    • DROP TIJDELIJKE TABEL list_of_non_transactional_temporary_tables
    • DROP TIJDELIJKE TABEL list_of_transactional_temporary_tables
    • DROP TABLE list_of_normal_tables

Vanaf MariaDB 10.0.,8, DROP TABLE op de master wordt op de slave behandeld als DROP TABLE IF EXISTS. U kunt dit wijzigen door slave-ddl-exec-mode in te stellen op STRICT.

een interne #sql-laten vallen… Table

als het mysqld-proces wordt uitgeschakeld tijdens een ALTER TABLE kunt u een tabel vinden met de naam #sql -… in uw data directory. In MariaDB 10.3 worden InnoDB-tabellen met dit voorvoegsel automatisch verwijderd tijdens startup.In MariaDB 10.4 wij zorgen ervoor dat deze tijdelijke tabellen altijd automatisch worden verwijderd.,

Als u een van deze tabellen expliciet wilt verwijderen, kunt u dit doen met de volgende syntaxis:

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

wanneer u een ALTER TABLE…ALGORITHM=INPLACE uitvoert die de tabel opnieuw bouwt, zal InnoDB een interne #sql-ib tabel aanmaken. Voor deze tabellen wordt het .frm bestand iets anders genoemd. Om een dergelijke tabel te laten vallen na een servercrash, moet u het #sql*.frm bestand hernoemen om overeen te komen met het #sql-ib*.ibd bestand.,

alle tabellen in een Database laten vallen

de beste manier om alle tabellen in een database te laten vallen is doorDROP DATABASE uit te voeren, waardoor de database zelf en alle tabellen erin zullen verdwijnen.

echter, als u alle tabellen in de database wilt laten vallen, maar u wilt ook de database zelf en alle andere niet-tabelobjecten erin behouden, dan moet u DROP TABLE uitvoeren om elke afzonderlijke tabel te laten vallen. U kunt deze DROP TABLE commando ‘ s construeren door de TABLES tabel in de information_schema database te bevragen., Bijvoorbeeld:

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

voorbeelden

DROP TABLE Employees, Customers;

opmerkingen

let op dat DROP TABLE zowel tabellen als reeksen kan laten vallen. Dit wordt voornamelijk gedaan om oude tools zoals mysqldump te laten werken met sequenties.

zie ook

  • tabel aanmaken
  • ALTER TABLE
  • toon tabel aanmaken
  • DROP SEQUENCE
  • variabele slave-DDL-exec-mode.

Leave a Comment