DROP TABLE (Svenska)

Syntax

DROP TABLE tbl_name ... 

Description

DROP TABLE tar bort en eller flera tabeller. Du måste ha behörigheten DROP för varje tabell. Alla tabelldata och tabelldefinitionen tas bort, liksom utlösare associerade till tabellen, så varaförsiktigt med detta uttalande! Om någon av tabellerna som namnges i argumentlistan inte finns, returnerar MariaDB ett fel som anger med namn vilka icke-befintliga tabellerdet inte kunde släppa, men det släpper också alla tabeller i listan som doexist.,

viktigt: när en tabell tas bort släpps inte användarbehörigheterna i tabellen automatiskt. Se BIDRAGET.

om en annan tråd använder tabellen i en explicit transaktion eller en autocommit-transaktion, förvärvar tråden ett metadatalås (MDL) på tabellen. DROP TABLE – satsen väntar i gängläget ”Waiting for table metadata lock” tills MDL släpps. MDLs släpps i följande fall:

  • om en MDL förvärvas i en explicit transaktion, kommer MDL att släppas när transaktionen slutar.,
  • om en MDL förvärvas i en autocommit-transaktion, kommer MDL att släppas när uttalandet slutar.
  • transaktions-och icke-transaktionstabeller hanteras på samma sätt.

Observera att för en partitionerad tabell tar DROP TABLE permanent bort tabelldefinitionen, alla dess partitioner och alla data som lagrades idessa partitioner. Det tar också bort partitioneringsdefinitionen (.par) fileassociated med det tappade bordet.

för varje refererad tabell,DROP TABLE droppar en tillfällig tabell med det namnet, om det finns., Om det inte finns, och nyckelordet TEMPORARY inte används, faller det en icke-tillfällig tabell med samma namn, om det finns. NyckelordetTEMPORARY säkerställer att en icke-tillfällig tabell inte kommer att släppas av misstag.

användIF EXISTS för att förhindra att ett fel uppstår för tabeller som inte existerar. ANOTE genereras för varje icke-existerande tabell när du använderIF EXISTS. Se VISA VARNINGAR.

om en utländsk nyckel refererar till den här tabellen kan inte tabellen släppas., I det här fallet är det nödvändigt att släppa den utländska nyckeln först.

RESTRICT ochCASCADE får göra Portering från andra databassystem enklare. I MariaDB gör de ingenting.

kommentaren före tabellnamnen (/*COMMENT TO SAVE*/) lagras i binärloggen. Den funktionen kan användas av replikeringsverktyg för att skicka sina interna meddelanden.

det är möjligt att ange tabellnamn somdb_name.tab_name. Detta är användbart för att ta bort tabeller från flera databaser med ett uttalande., Mer information finns i Identifikationskvalifikationer.

DROP-behörigheten krävs för att användaDROP TABLE I icke-temporära tabeller. För temporära tabeller krävs inga privilegier, eftersom sådana tabeller endast är synliga för den aktuella sessionen.

notera: DROP TABLE utför automatiskt den aktuella aktiva transaktionen,såvida du inte använder nyckelordet TEMPORARY.

MariaDB börjar med 10.5.4

Från MariaDB 10.5.,4, DROP TABLEraderar på ett tillförlitligt sätt tabellrester i en lagringsmotor även om filen.frm saknas. Innan dess skulle en .frm – fil som saknas resultera i att uttalandet misslyckas.

MariaDB börjar med 10.3.1

vänta/NOWAIT

Ställ in låset vänta timeout. Se vänta och NOWAIT.

DROP TABLE in replication

DROP TABLE har följande egenskaper i replikering:

  • DROP TABLE IF EXISTS loggas alltid.,
  • DROP TABLE withoutIF EXISTS for tables that don ’ t exist are not written to the binary log.
  • släppa avtillfälliga tabeller prefixeras i loggen medtillfällig . Dessa droppar loggas endast när du kör statement eller mixed mode replication.,
  • enDROP TABLE statement kan loggas med upp till 3 olikaDROP statements:
    • släpp temporär tabell list_of_non_transactional_temporary_tables
    • släpp temporär tabell list_of_non_transactional_temporary_tables
    • släpp tillfällig tabell list_of_transactional_temporary_tables
    • släpp tabell list_of_normal_tables

från MariaDB 10.0.,8,DROP TABLE på master behandlas på slaven somDROP TABLE IF EXISTS . Du kan ändra det genom att ställa in slave-DDL-exec-mode till STRICT.

släppa en intern #sql-… Tabell

Om mysqld processen dödas under ett ALTER TABLE du kan hitta en tabell som heter #sql-… i din datakatalog. I MariaDB 10.3 kommer InnoDB-tabeller med detta prefix att raderas automatiskt under startup.In MariaDB 10.4 vi kommer att se till att dessa tillfälliga tabeller alltid raderas automatiskt.,

om du vill ta bort en av dessa tabeller uttryckligen kan du göra det genom att använda följande syntax:

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

När du kör en ALTER TABLE…ALGORITHM=INPLACE som bygger om tabellen, kommer InnoDB att skapa en intern #sql-ib tabell. För dessa tabeller kommer filen .frm att kallas något annat. För att släppa en sådan tabell efter en serverkrasch måste du byta namn på filen#sql*.frm för att matcha filen#sql-ib*.ibd.,

släppa alla tabeller i en databas

det bästa sättet att släppa alla tabeller i en databas är genom att köra DROP DATABASE, som kommer att släppa databasen själv, och alla tabeller i den.

men om du vill släppa alla tabeller i databasen, men du också vill behålla databasen själv och andra icke-tabellobjekt i den, måste du köra DROP TABLE för att släppa varje enskild tabell. Du kan konstruera dessa DROP TABLE – kommandon genom att fråga TABLES – tabellen i information_schema – databasen., Till exempel:

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

exempel

DROP TABLE Employees, Customers;

anmärkningar

se upp att DROP TABLE kan släppa både tabeller och sekvenser. Detta görs främst för att tillåta gamla verktyg som mysqldump att arbeta med sekvenser.

Se även

  • Skapa tabell
  • ändra tabell
  • visa Skapa tabell
  • släpp sekvens
  • variabel Slav-DDL-exec-läge.

Leave a Comment