Upuść vs Obetnij
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. Instrukcje Drop i Truncate usuwają całe dane w tabeli i powiązaną instrukcję SQL. Operacja usuwania nie jest skuteczna w tym przypadku, ponieważ wykorzystuje więcej miejsca do przechowywania niż operacja Usuń i Obetnij.
W przypadku, gdy chcemy odrzucić tabelę w bazie danych wraz ze wszystkimi jej danymi, SQL pozwala nam to łatwo wykonać za pomocą instrukcji Drop. Polecenie Drop jest poleceniem DDL (Data Definition Language) i można go użyć do zniszczenia istniejącej bazy danych, tabeli, indeksu lub widoku. Usuwa wszystkie informacje w tabeli, a także strukturę tabeli z bazy danych. Możemy również chcieć po prostu pozbyć się wszystkich danych w tabeli, ale bez tabeli, a w takim scenariuszu możemy użyć instrukcji Truncate w SQL. Truncate 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 Drop 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. Więc całkowicie usuwa istniejący obiekt z bazy danych, a relacje z innymi tabelami również nie będą już ważne po wykonaniu polecenia. Usuwa również wszystkie informacje o tabeli ze słownika danych. Poniżej przedstawiono typową składnię używania 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.
Należy zwrócić uwagę, że instrukcja Drop nie może być używana do usuwania tabeli, do której odwołuje się już ograniczenie klucza obcego. W takim przypadku należy najpierw usunąć odwołujące się ograniczenie klucza obcego lub tę konkretną tabelę. Ponadto instrukcji Drop nie można zastosować do tabel systemowych w bazie danych.
Ponieważ polecenie Drop jest instrukcją automatycznego zatwierdzania, uruchomionej operacji nie można wycofać i żadne wyzwalacze nie zostaną uruchomione. Gdy tabela zostanie usunięta, wszystkie odwołania do tabeli nie będą prawidłowe, a więc jeśli chcemy ponownie z niej skorzystać, należy ją odtworzyć z wszystkimi ograniczeniami integralności i uprawnieniami dostępu. Wszystkie relacje z innymi tabelami również muszą zostać ponownie zlokalizowane.
Obetnij polecenie
Polecenie obcinania jest poleceniem DDL i usuwa wszystkie wiersze w tabeli bez żadnych warunków określonych przez użytkownika oraz zwalnia miejsce używane przez tabelę, ale struktura tabeli z jej kolumnami, indeksami i ograniczeniami pozostaje taka sama. Obcięcie eliminuje dane z tabeli przez cofnięcie przydziału stron danych używanych do przechowywania danych tabeli, a tylko te zwolnienia stron są przechowywane w dzienniku transakcji. Dlatego wykorzystuje mniej zasobów dziennika transakcji i zasobów systemowych w porównaniu z innymi powiązanymi poleceniami SQL, takimi jak Usuń. Tak więc Truncate jest nieco szybszą instrukcją niż inne. Poniżej przedstawiono typową składnię polecenia Obetnij.
TABELA PRAWIDŁOWA
Nazwę tabeli, z której chcemy usunąć całe dane, należy zamienić w powyższej składni.
Obcięcie nie może być używane w tabeli, do której odwołuje się ograniczenie klucza obcego. Używa zatwierdzenia automatycznie przed wykonaniem działania i kolejnego zatwierdzenia później, więc wycofanie transakcji jest niemożliwe i nie są uruchamiane żadne wyzwalacze. Jeśli chcemy ponownie użyć tabeli, wystarczy nam uzyskać dostęp do istniejącej definicji tabeli w bazie danych.
Jaka jest różnica między Drop i Truncate?
Zarówno polecenia Drop, jak i Truncate są poleceniami DDL, a także instrukcjami automatycznego zatwierdzania, więc transakcji wykonanych za pomocą tych poleceń nie można wycofać.
Podstawowa różnica między Drop i Truncate polega na tym, że polecenie Drop usuwa nie tylko wszystkie dane w tabeli, ale także trwale usuwa strukturę tabeli z bazy danych wraz ze wszystkimi odniesieniami, podczas gdy polecenie Truncate usuwa tylko wszystkie wiersze w tabeli i zachowuje strukturę tabeli i jej odniesienia.
Jeśli tabela zostanie usunięta, relacje z innymi tabelami nie będą już prawidłowe, a ograniczenia integralności i uprawnienia dostępu również zostaną usunięte. Więc jeśli tabela ma być ponownie wykorzystana, 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.
Po zastosowaniu tych poleceń musimy zachować ostrożność, aby ich używać. Powinniśmy również lepiej zrozumieć naturę tych poleceń, sposób ich działania, a także starannie zaplanować je przed ich użyciem, aby uniknąć pominięcia podstawowych elementów. Wreszcie, oba te polecenia mogą być używane do szybkiego i łatwego czyszczenia baz danych, zużywając mniej zasobów.