Syntaks
DROP TABLE tbl_name ...
Beskrivelse
DROP TABLE
fjerner én eller flere tabeller. Du må ha DROP
privilegefor hvert bord. Alle bord-data og bordet definisjon er fjernet, så vel som utløser knyttet til bordet, så becareful med denne uttalelsen! Hvis noen av tabellene som er navngitt i argumentet listen ikke eksisterer, MariaDB returnerer en feilmelding som indikerer etter navn som ikke-eksisterende tablesit var ikke i stand til å slippe, men det faller også alt av tabellene i listen som doexist.,
Viktig: Når en tabell er utelatt, bruker privilegier på bordet er notautomatically droppet. Se GRANT.
Hvis en annen tråd er ved å bruke tabellen i en eksplisitt transaksjon eller en autocommit transaksjonen, så tråden får en metadata-lås (MDL) på bordet. DROP TABLE
uttalelse vil vente i det «Venter på bordet metadata lock» tråden staten til MDL er utgitt. MDLs er utgitt i følgende tilfeller:
- Hvis en MDL er kjøpt i en konkret transaksjon, for deretter MDL vil bli utgitt når transaksjonen er avsluttet.,
- Hvis en MDL er kjøpt i en autocommit transaksjonen, så MDL vil bli utgitt når uttalelsen avsluttes.
- Overførbar og ikke-overførbar tabellene er håndtert den samme.
Merk at for en partisjonert tabell, DROP TABLE
permanent fjerner tabledefinition, alle partisjoner, og alle data som var lagret inthose partisjoner. Det fjerner også partisjonering definisjon (.par) fileassociated med droppet bordet.
For hver referansetabellen, DROP TABLE
dråper en midlertidig tabell med det navnet, hvis det finnes., Hvis det ikke finnes, og TEMPORARY
søkeord er ikke brukt, det slipper en ikke-midlertidige tabellen med samme navn, hvis det finnes. TEMPORARY
søkeord sikrer at en ikke-midlertidige tabellen vil ikke ved et uhell bli droppet.
Bruk IF EXISTS
for å forhindre en feil oppstår i tabeller som gjør notexist. En NOTE
genereres for hver ikke-eksisterende tabell ved bruk avIF EXISTS
. Se VISE ADVARSLER.
Hvis en sekundærnøkkel referanser dette bordet, kan ikke bli droppet., I dette tilfellet, er det nødvendig å slippe utenlandske nøkkel første.
RESTRICT
og CASCADE
har lov til å gjøre portering fra andre database-systemer enklere. I MariaDB, de gjør ingenting.
kommentar før bordet navn (/*COMMENT TO SAVE*/
) er lagret i det binære logg. Denne funksjonen kan brukes av replikering verktøy for å sende interne meldinger.
Det er mulig å angi tabellen navn som db_name
.tab_name
. Dette er nyttig for å slette tabeller fra flere databaser med en uttalelse., Se Id-Kvalifiseringer for detaljer.
DROP rettighet som kreves for å bruke DROP TABLE
på ikke-midlertidige tabeller. For midlertidige tabeller, ingen rettighet som er nødvendig, fordi slike tabeller er kun synlig for den gjeldende økten.
Merk: DROP TABLE
automatisk begår de aktive transaksjonen,med mindre du bruker TEMPORARY
søkeord.
MariaDB starter med 10.5.4
Fra MariaDB 10.5.,4, DROP TABLE
pålitelig sletter tabell rester inne i en storage engine, selv om .frm
fil mangler. Før så, en manglende .frm
fil vil resultere i uttalelsen sviktende.
MariaDB starter med 10.3.1
VENT/NOWAIT
Angi låser tidsavbrudd for venting. Se VENTE og NOWAIT.
DROP TABLE i replikering
DROP TABLE
har følgende egenskaper i replikering:
-
DROP TABLE IF EXISTS
er alltid innlogget., -
DROP TABLE
utenHVIS det FINNES
for tabeller som ikke eksisterer er ikke skrevet til den binære logg. - Gjensetting av
MIDLERTIDIGE
bordene står i loggen medMIDLERTIDIGE
. Disse dråpene er bare logges når du kjører uttalelse eller blandet modus replikering., - En
DROP TABLE
– setningen kan være logget med opptil 3 forskjelligeUTELAT
uttalelser:UTELAT MIDLERTIDIGE TABELLEN list_of_non_transactional_temporary_tables
UTELAT MIDLERTIDIGE TABELLEN list_of_transactional_temporary_tables
DROP TABLE list_of_normal_tables
Starter fra MariaDB 10.0.,8, DROP TABLE
på master er behandlet på den slave som DROP TABLE IF EXISTS
. Du kan endre dette ved å sette slave-ddl-exec-modus til STRENGE
.
Slippe en Intern #sql-… Tabell
Hvis mysqld prosessen er drept under et ALTER TABLE du kan finne en tabell som heter #sql-… i data-katalogen. I MariaDB 10.3, InnoDB tabeller med dette prefikset vil de slettes automatisk ved oppstart.I MariaDB 10.4 vi vil sikre at disse midlertidige tabeller vil alltid bli slettet automatisk.,
Hvis du ønsker å slette en av disse tabellene eksplisitt du kan gjøre dette ved å bruke følgende syntaks:
DROP TABLE `#mysql50##sql-...`;
Når du kjører en ALTER TABLE…ALGORITHM=INPLACE
som bygger opp tabellen, InnoDB vil opprette et internt #sql-ib
tabell. For disse tabellene, .frm
filen vil bli kalt noe annet. For å slippe et slikt bord etter en server-krasj, må du endre #sql*.frm
fil for å matche #sql-ib*.ibd
– filen.,
Slippe Alle Tabeller i en Database
Den beste måten å slippe alle tabeller i en database, er ved å utføre DROP DATABASE
, som vil slippe database seg selv, og alle tabeller i det.
hvis du Imidlertid ønsker å slippe alle tabeller i databasen, men du også ønsker å holde database seg selv og alle andre ikke-tabell gjenstander i det, så ville du trenger for å utføre. DROP TABLE
for å slippe hver enkelt tabell. Du kan konstruere disse DROP TABLE
kommandoer ved å spørre TABLES
tabell i information_schema
database., For eksempel:
SELECT CONCAT('DROP TABLE IF EXISTS `', TABLE_SCHEMA, '`.`', TABLE_NAME, '`;')FROM information_schema.TABLESWHERE TABLE_SCHEMA = 'mydb';
Eksempler på
DROP TABLE Employees, Customers;
Notater
vær oppmerksom på at DROP TABLE
kan slippe både bord og sekvenser. Dette er hovedsakelig gjort for å tillate gamle verktøy som mysqldump å jobbe med sekvenser.
Se Også:
- CREATE TABLE
- ALTER TABLE
- VIS CREATE TABLE
- UTELAT REKKEFØLGE
- Variabel-slave-ddl-exec-modus.