DROP TABLE (Română)

Sintaxa

DROP TABLE tbl_name ... 

Descriere

DROP TABLE elimină unul sau mai multe tabele. Trebuie să aveți privilegiul DROP pentru fiecare tabel. Toate datele din tabel și definiția tabelului sunt eliminate, precum și declanșatoarele asociate tabelului, așa că fiți atenți la această afirmație! Dacă oricare dintre tabelele numite în lista argumentelor nu există, MariaDB returnează o eroare indicând după nume care tabele inexistentenu a putut să scadă, dar scade și toate tabelele din listă care există.,Important: când un tabel este abandonat, privilegiile utilizatorilor de pe masă nu sunt abandonate automat. Vezi GRANT.

dacă un alt fir utilizează tabelul într-o tranzacție explicită sau într-o tranzacție autocommit, atunci firul obține un blocaj de metadate (MDL) pe masă. Declarația DROP TABLE va aștepta în starea firului „așteptând blocarea metadatelor din tabel” până când MDL este eliberat. MDL-urile sunt eliberate în următoarele cazuri:

  • dacă un MDL este achiziționat într-o tranzacție explicită, atunci MDL-ul va fi eliberat la încheierea tranzacției.,
  • dacă un MDL este achiziționat într-o tranzacție autocommit, atunci MDL-ul va fi eliberat la sfârșitul extrasului.
  • tabelele tranzacționale și non-tranzacționale sunt tratate la fel.

Rețineți că pentru un tabel partiționat, DROP TABLE elimină permanent tabledefinition, toate partițiile, și toate datele care au fost stocate inthose partiții. De asemenea, elimină definiția de partiționare (.par) fișierasociate cu tabelul scăzut.

pentru fiecare tabel de referință, DROP TABLE scade un tabel temporar cu acest nume, dacă există., Dacă nu există și cuvântul cheie TEMPORARY nu este utilizat, acesta scade un tabel non-temporar cu același nume, dacă există. Cuvântul cheie TEMPORARY asigură că un tabel non-temporar nu va fi abandonat accidental.

utilizați IF EXISTS pentru a preveni apariția unei erori pentru tabelele care nuexistă. Un NOTEeste generat pentru fiecare tabel inexistent atunci când se utilizeazăIF EXISTS. Consultați afișarea avertismentelor.

dacă o cheie străină face referire la acest tabel, tabelul nu poate fi abandonat., În acest caz, este necesar să renunțați mai întâi la cheia străină.

RESTRICT și CASCADE sunt permise pentru a face portare din alte sisteme de baze de date mai ușor. În MariaDB, nu fac nimic.

comentariul dinaintea numelor tabelelor (/*COMMENT TO SAVE*/) este stocat în Jurnalul binar. Această caracteristică poate fi utilizată de instrumentele de replicare pentru a trimite mesajele interne.

este posibil să specificați numele tabelelor ca db_name.tab_name. Acest lucru este util pentru a șterge tabele din mai multe baze de date cu o singură declarație., A se vedea identificatorul de calificare pentru detalii.

privilegiul DROP este necesar pentru a utiliza DROP TABLE pe tabele non-temporare. Pentru tabelele temporare, nu este necesar niciun privilegiu, deoarece astfel de tabele sunt vizibile numai pentru sesiunea curentă.

Notă: DROP TABLE automat se angajează activ curent tranzacție,dacă nu utilizați TEMPORARY cuvinte cheie.

MariaDB începând cu 10.5.4

Din MariaDB 10.5.,4, DROP TABLEșterge în mod fiabil resturile de masă din interiorul unui motor de stocare, chiar dacă fișierul .frm lipsește. Înainte de aceasta, un fișier .frm lipsă ar duce la eșecul declarației.

MariaDB începând cu 10.3.1

așteptați/NOWAIT

setați timpul de așteptare de blocare. A se vedea, așteptați și NOWAIT.

DROP TABLE în replicare

DROP TABLE are următoarele caracteristici în replicare:

  • DROP TABLE DACĂ EXISTĂ sunt mereu conectat.,
  • DROP TABLE fara DACĂ EXISTĂ pentru tabele care nu există nu sunt scrise în jurnalul binar.
  • Dropping de tabele temporaresunt prefixate în jurnalul cu temporar. Aceste picături sunt înregistrate numai atunci când se execută declarație sau replicare modul mixt.,
  • Un DROP TABLE declarație poate fi conectat cu până la 3 diferite DROP declarații:
    • DROP TABEL TEMPORAR list_of_non_transactional_temporary_tables
    • DROP TABEL TEMPORAR list_of_transactional_temporary_tables
    • DROP TABLE list_of_normal_tables

Pornind de la MariaDB 10.0.,8, DROP TABLE pe maestru este tratat pe sclavi ca DROP TABLE DACĂ EXISTĂ. Puteți schimba acest lucru setând slave-ddl-exec-mode la STRICT.

Dropping un #sql intern -… Tabel

dacă procesul mysqld este ucis în timpul unui tabel ALTER, puteți găsi un tabel numit # sql -… în directorul de date. În MariaDB 10.3, tabelele InnoDB cu acest prefix vor fi șterse automat în timpul startup.In MariaDB 10.4 ne vom asigura că aceste tabele temporare vor fi întotdeauna șterse automat.,

Dacă doriți să ștergeți unul dintre aceste tabele în mod explicit puteți face acest lucru folosind următoarea sintaxă:

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

atunci Când rulează un ALTER TABLE…ALGORITHM=INPLACE care reconstruiește masă, InnoDB va crea un intern #sql-ib masă. Pentru aceste tabele, fișierul .frm va fi numit altceva. În scopul de a scădea astfel un tabel după un accident de server, trebuie să redenumiți #sql*.frm file pentru a se potrivi #sql-ib*.ibd fișier.,cel mai bun mod de a renunța la toate tabelele dintr-o bază de date este executândDROP DATABASE, care va renunța la baza de date în sine și la toate tabelele din ea.

cu toate Acestea, dacă doriți să renunțe la toate tabelele din baza de date, dar, de asemenea, doriți să păstrați baza de date în sine și orice alte non-masă de obiecte în ea, atunci ai nevoie pentru a executa DROP TABLE să renunțe la fiecare masă. Puteți construi aceste DROP TABLE comenzi prin interogarea TABLES masa în information_schema baza de date., De exemplu:

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

Exemple

DROP TABLE Employees, Customers;

Note

Feriți-vă că DROP TABLE poate scadea ambele tabele și secvențe. Acest lucru se face în principal pentru a permite instrumentelor vechi precum mysqldump să lucreze cu secvențe.

A se vedea, de asemenea,

  • Creare tabel
  • ALTER TABLE
  • afișare Creare tabel
  • secvență picătură
  • variabilă slave-ddl-exec-mode.

Leave a Comment