DROP TABLE (Polski)

składnia

DROP TABLE tbl_name ... 

opis

DROP TABLE usuwa jedną lub więcej tabel. Musisz mieć DROP Wszystkie dane tabeli i definicja tabeli są usuwane, a także wyzwalacze powiązane z tabelą, więc uważaj na to polecenie! Jeśli którakolwiek z tabel wymienionych na liście argumentów nie istnieje, MariaDB zwraca błąd wskazujący po nazwie, które nieistniejące tablesit nie był w stanie upuścić, ale również zrzuca wszystkie tabele z listy, które nie istnieją.,

ważne: gdy tabela zostanie upuszczona, uprawnienia użytkownika na tabeli nie zostaną automatycznie upuszczone. Patrz na Granta.

Jeśli inny wątek używa tabeli w jawnej transakcji lub transakcji autocommit, wtedy wątek uzyskuje blokadę metadanych (MDL) w tabeli. Instrukcja DROP TABLE będzie czekać w stanie” Waiting for table metadata lock ” do momentu wydania MDL. MDL są zwalniane w następujących przypadkach:

  • Jeśli MDL zostanie nabyty w jawnej transakcji, to MDL zostanie zwolniony po zakończeniu transakcji.,
  • Jeśli MDL zostanie nabyty w transakcji autocommit, to MDL zostanie zwolniony po zakończeniu instrukcji.
  • tabele transakcyjne i nietransakcyjne są obsługiwane tak samo.

zauważ, że dla podzielonej na partycje tabeli DROP TABLE trwale usuwa zdefiniowanie tabel, wszystkie jej partycje i wszystkie dane, które były przechowywane w tych partycjach. Usuwa również definicję partycjonowania (.par) fileassocjated with the dropped table.

dla każdej wskazanej tabeli DROP TABLE usuwa tabelę tymczasową o tej nazwie, jeśli istnieje., Jeśli nie istnieje, a słowo kluczowe TEMPORARY nie jest używane, to usuwa nie-tymczasową tabelę o tej samej nazwie, jeśli istnieje. Słowo kluczoweTEMPORARY zapewnia, że nie-tymczasowa tabela nie zostanie przypadkowo upuszczona.

użyj IF EXISTS, aby zapobiec wystąpieniu błędu dla tabel, które nie występują. ANOTE jest generowana dla każdej nieistniejącej tabeli przy użyciu IF EXISTS. Zobacz Pokaż Ostrzeżenia.

Jeśli klucz obcy odwołuje się do tej tabeli, tabeli nie można upuścić., W takim przypadku należy najpierw upuścić klucz obcy.

RESTRICT ICASCADE mogą ułatwić przenoszenie z innych systemów baz danych. W MariaDB nic nie robią.

komentarz przed nazwami tabel (/*COMMENT TO SAVE*/) jest przechowywany w dzienniku binarnym. Ta funkcja może być używana przez narzędzia replikacyjne do wysyłania wewnętrznych wiadomości.

można określić nazwy tabel jakodb_name.tab_name. Jest to przydatne do usuwania tabel z wielu baz danych za pomocą jednej instrukcji., Szczegóły można znaleźć w Kwalifikatorach identyfikatorów.

uprawnienie DROP jest wymagane do używaniaDROP TABLE na nieokresowych tabelach. W przypadku tabel tymczasowych uprawnienia nie są wymagane, ponieważ takie tabele są widoczne tylko dla bieżącej sesji.

Uwaga: DROP TABLE automatycznie zatwierdza bieżącą aktywną transakcję,chyba że użyjesz słowa kluczowego TEMPORARY.

MariaDB począwszy od 10.5.4

od MariaDB 10.5.,4, DROP TABLE niezawodnie usuwa pozostałości tabeli wewnątrz silnika pamięci, nawet jeśli brakuje pliku .frm. Wcześniej brakujący plik.frm spowodowałby niepowodzenie instrukcji.

MariaDB począwszy od 10.3.1

WAIT/NOWAIT

ustawia limit czasu oczekiwania blokady. Zobacz też

upuść tabelę w replikacji

DROP TABLE ma następujące cechy w replikacji:

  • upuść tabelę, jeśli istnieje są zawsze rejestrowane.,
  • upuść tabelę bezjeśli istnieje dla tabel, które nie istnieją, nie są zapisywane do dziennika binarnego.
  • opuszczanietymczasowe tabele są poprzedzone w dziennikutymczasowe . Te krople są rejestrowane tylko podczas uruchamiania instrukcji lub replikacji w trybie mieszanym.,
  • jedna DROP TABLE instrukcja może być rejestrowana z maksymalnie 3 różnymi DROP Instrukcja:
    • DROP TEMPORARY TABLE list_of_non_transactional_temporary_tables
    • Drop temporary table list_of_transactional_temporary_tables
    • drop table list_of_normal_tables

zaczynając od MariaDB 10.0.,8, upuść tabelęNA master jest traktowany na slave jako upuść tabelę, jeśli istnieje. Możesz to zmienić, ustawiając slave-DDL-Exec-mode na STRICT.

upuszczanie wewnętrznego # sql-… Tabela

Jeśli proces mysqld zostanie zabity podczas zmiany tabeli, możesz znaleźć tabelę o nazwie #sql-… w katalogu danych. W MariaDB 10.3 tabele InnoDB z tym prefiksem zostaną automatycznie usunięte podczas startup.In MariaDB 10.4 zapewniamy, że te tymczasowe tabele będą zawsze usuwane automatycznie.,

Jeśli chcesz wyraźnie usunąć jedną z tych tabel, możesz to zrobić używając następującej składni:

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

podczas uruchamiania tabeliALTER TABLE…ALGORITHM=INPLACE, która przebudowuje tabelę, InnoDB utworzy wewnętrzną tabelę#sql-ib. Dla tych tabel plik .frm będzie nazywany czymś innym. Aby upuścić taką tabelę po awarii serwera, musisz zmienić nazwę pliku #sql*.frm, aby pasował do pliku #sql-ib*.ibd.,

upuszczenie wszystkich tabel w bazie danych

najlepszym sposobem na upuszczenie wszystkich tabel w bazie danych jest wykonanieDROP DATABASE, co spowoduje upuszczenie samej bazy danych i wszystkich tabel w niej.

Jeśli jednak chcesz upuścić wszystkie tabele do bazy danych, ale chcesz również zachować samą bazę danych i wszystkie inne obiekty spoza tabeli w niej, musisz wykonać DROP TABLE, aby upuścić każdą pojedynczą tabelę. Możesz utworzyć te polecenia DROP TABLE poprzez zapytanie do tabeli TABLES w bazie danych information_schema., Na przykład:

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

przykłady

DROP TABLE Employees, Customers;

uwagi

uważaj, że DROP TABLE może upuszczać zarówno tabele, jak i sekwencje. Odbywa się to głównie po to, aby stare narzędzia, takie jak mysqldump, mogły pracować z sekwencjami.

patrz również

  • Utwórz tabelę
  • Zmień tabelę
  • Pokaż Utwórz tabelę
  • Sekwencja kropli
  • zmienna slave-DDL-exec-mode.

Leave a Comment