Upuść vs. obcięcie
Drop i Truncate to dwie instrukcje SQL (Structured Query Language) używane w systemach zarządzania bazami danych, w których chcemy usunąć rekordy danych z bazy danych. Zarówno instrukcje Drop, jak i Truncate usuwają wszystkie dane z tabeli i powiązaną instrukcję SQL. Operacja usuwania nie jest w tym przypadku skuteczna, ponieważ zajmuje więcej miejsca do przechowywania niż upuść i przytnij.
W przypadku, gdy chcemy odrzucić tabelę w bazie danych razem ze wszystkimi jej danymi, SQL pozwala nam to łatwo wykonać za pomocą instrukcji Drop. Polecenie Drop jest poleceniem DDL (Data Definition Language) i może być używane do niszczenia istniejącej bazy danych, tabeli, indeksu lub widoku. Usuwa całą informację w tabeli, a także strukturę tabeli z bazy danych. Ponadto możemy chcieć po prostu pozbyć się wszystkich danych z tabeli, ale bez tabeli, iw takim scenariuszu możemy użyć instrukcji Truncate w SQL. Obcięcie jest również poleceniem DDL i eliminuje wszystkie wiersze w tabeli, ale zachowuje tę samą definicję tabeli do wykorzystania w przyszłości.
Upuść polecenie
Jak wspomniano wcześniej, polecenie Usuń usuwa definicję tabeli i wszystkie jej dane, ograniczenia integralności, indeksy, wyzwalacze i uprawnienia dostępu, które zostały utworzone w tej konkretnej tabeli. W ten sposób całkowicie usuwa istniejący obiekt z bazy danych, a relacje z innymi tabelami również przestają obowiązywać po wykonaniu polecenia. Ponadto usuwa wszystkie informacje o tabeli ze słownika danych. Poniżej znajduje się typowa składnia użycia instrukcji Drop w tabeli.
DROP TABLE
Musimy po prostu zastąpić nazwę tabeli, którą chcemy usunąć z bazy danych w powyższym przykładzie polecenia Drop.
Ważne jest, aby podkreślić, że instrukcja Drop nie może być użyta do usunięcia tabeli, do której już odwołuje się ograniczenie klucza obcego. W takim przypadku należy najpierw usunąć odwołujące się ograniczenie klucza obcego lub konkretną tabelę. Ponadto instrukcja Drop nie może być zastosowana do tabel systemowych w bazie danych.
Ponieważ polecenie Drop jest instrukcją automatycznego zatwierdzania, raz uruchomiona operacja nie może zostać wycofana i żadne wyzwalacze nie zostaną uruchomione. Gdy tabela zostanie usunięta, wszystkie odniesienia do tabeli nie będą ważne, więc jeśli chcemy ponownie użyć tabeli, należy ją odtworzyć ze wszystkimi ograniczeniami integralności i uprawnieniami dostępu. Wszystkie relacje z innymi tabelami również muszą być ponownie zlokalizowane.
Obetnij polecenie
Polecenie Obtnij to polecenie DDL, które usuwa wszystkie wiersze z tabeli bez żadnych warunków określonych przez użytkownika i zwalnia miejsce używane przez tabelę, ale struktura tabeli z kolumnami, indeksami i ograniczeniami pozostaje taka sama. Funkcja Truncate eliminuje dane z tabeli poprzez cofnięcie alokacji stron danych używanych do przechowywania danych tabeli, a tylko te cofnięcia alokacji stron są przechowywane w dzienniku transakcji. Dzięki temu wykorzystuje mniej zasobów dziennika transakcji i zasobów systemowych w porównaniu z innymi powiązanymi poleceniami SQL, takimi jak Delete. Tak więc Truncate jest nieco szybszym stwierdzeniem niż inne. Poniżej znajduje się typowa składnia polecenia Obtnij.
OBCIĄŻ TABELĘ
Powinniśmy zastąpić nazwę tabeli, z której chcemy usunąć całe dane, w powyższej składni.
Truncate nie może być użyte w tabeli, do której odwołuje się ograniczenie klucza obcego. Wykorzystuje zatwierdzenie automatycznie przed wykonaniem działania i kolejne zatwierdzenie później, więc wycofanie transakcji jest niemożliwe i nie są uruchamiane żadne wyzwalacze. Jeśli chcemy ponownie użyć tabeli, musimy tylko uzyskać dostęp do istniejącej definicji tabeli w bazie danych.
Jaka jest różnica między upuszczaniem a przycinaniem?
Zarówno polecenia Upuść, jak i Obcinaj to polecenia DDL, a także instrukcje automatycznego zatwierdzania, więc transakcje wykonane za pomocą tych poleceń nie mogą zostać wycofane.
Podstawową różnicą między Upuść a Obcięciem jest to, że polecenie Upuść usuwa nie tylko wszystkie dane w tabeli, ale także trwale usuwa strukturę tabeli z bazy danych ze wszystkimi odniesieniami, podczas gdy polecenie Obcinaj usuwa tylko wszystkie wierszy w tabeli i zachowuje strukturę tabeli i jej odniesienia.
Jeśli tabela zostanie usunięta, relacje z innymi tabelami przestaną obowiązywać, a ograniczenia integralności i uprawnienia dostępu również zostaną usunięte. Jeśli więc tabela jest wymagana do ponownego użycia, należy ją zrekonstruować z uwzględnieniem relacji, ograniczeń integralności, a także uprawnień dostępu. Ale jeśli tabela zostanie obcięta, struktura tabeli i jej ograniczenia pozostają do wykorzystania w przyszłości, więc żadne z powyższych odtworzeń nie jest wymagane do ponownego użycia.
Kiedy te polecenia są stosowane, musimy zachować ostrożność podczas ich używania. Powinniśmy również lepiej rozumieć naturę tych poleceń, sposób ich działania, a także staranne planowanie przed ich użyciem, aby zapobiec pominięciu podstawowych elementów. Wreszcie, oba te polecenia mogą być używane do szybkiego i łatwego czyszczenia baz danych, zużywając mniej zasobów.