Usuń a obetnij
Oba polecenia SQL (Structure Query Language), Delete i Truncate są używane do usuwania danych przechowywanych w tabelach w bazie danych. Delete to instrukcja DML (Data Manipulation Language), która usuwa niektóre lub wszystkie wiersze tabeli. Klauzula „Where” służy do określenia wierszy, które mają zostać usunięte, a jeśli klauzula Where nie jest używana z instrukcją Delete, usuwa wszystkie dane z tabeli. Truncate jest instrukcją DDL (Data Definition Language) i usuwa całe dane z tabeli. Oba te polecenia nie niszczą struktury tabeli ani odniesień do tabeli, a tylko dane są usuwane w razie potrzeby.
Usuń instrukcję
Instrukcja Delete umożliwia użytkownikowi usunięcie danych z istniejącej tabeli w bazie danych na podstawie określonego warunku, a do określenia tego warunku używana jest klauzula „Where”. Polecenie usuwania jest nazywane wykonaniem zarejestrowanym, ponieważ usuwa tylko jeden wiersz naraz i zachowuje wpis dla każdego usunięcia wiersza w dzienniku transakcji. To powoduje spowolnienie operacji. Delete jest instrukcją DML, więc nie jest automatycznie zatwierdzana podczas wykonywania polecenia. Dlatego w razie potrzeby operację usuwania można wycofać, aby ponownie uzyskać dostęp do danych. Po wykonaniu polecenia Usuń należy je zatwierdzić lub wycofać w celu trwałego zapisania zmian. Instrukcja Delete nie usuwa struktury tabeli z bazy danych. Nie zwalnia również miejsca w pamięci używanego przez tabelę.
Typową składnię polecenia Usuń przedstawiono poniżej.
USUŃ Z
lub
USUŃ Z GDZIE
Instrukcja obcinania
Instrukcja Truncate usuwa wszystkie dane z istniejącej tabeli w bazie danych, ale zachowuje tę samą strukturę tabeli, a także ograniczenia integralności, uprawnienia dostępu i relacje z innymi tabelami. Nie jest więc wymagane ponowne definiowanie tabeli i można użyć starej struktury tabeli, jeśli użytkownik chce ponownie użyć tabeli. Obetnij usuwa całe dane, cofając przydział stron danych używanych do przechowywania danych, a tylko te cofnięcia przydziałów są przechowywane w dzienniku transakcji. Dlatego polecenie truncate wykorzystuje do działania tylko mniej zasobów systemowych i dzienników transakcji, więc jest szybsze niż inne powiązane polecenia. Truncate jest poleceniem DDL, więc używa automatycznego zatwierdzania przed i po wykonaniu instrukcji. W związku z tym obcięcie nie może w żaden sposób ponownie przywrócić danych. Zwalnia przestrzeń pamięci używaną przez tabelę po wykonaniu. Jednak instrukcji Truncate nie można zastosować do tabel, do których odwołują się ograniczenia klucza obcego.
Poniżej przedstawiono typową składnię instrukcji Truncate.
TABELA PRAWIDŁOWA
Jaka jest różnica między Usuń a Obetnij? 1. Polecenia Usuń i Obetnij usuwają dane z istniejących tabel w bazie danych bez szkody dla struktury tabeli lub innych odniesień do tabeli. 2. Jednak polecenie Usuń może być użyte do usunięcia określonych wierszy tylko w tabeli przy użyciu odpowiedniego warunku lub do usunięcia wszystkich wierszy bez żadnego warunku, podczas gdy polecenie Obetnij może być użyte tylko do usunięcia całych danych w tabeli. 3. Delete jest poleceniem DML i w razie potrzeby może wycofać operację, ale Truncate jest poleceniem DDL, więc jest to instrukcja automatycznego zatwierdzania i nie można jej w żaden sposób wycofać. Dlatego ważne jest, aby ostrożnie używać tego polecenia w zarządzaniu bazą danych. 4. Operacja Truncate zużywa mniej zasobów systemowych i zasobów dziennika transakcji niż operacja Delete, dlatego też Truncate jest uważana za szybszą niż Delete. 5. Ponadto Delete nie zwalnia miejsca używanego przez tabelę, podczas gdy Truncate zwalnia miejsce używane po wykonaniu, więc Delete nie jest efektywne w przypadku usunięcia całych danych z tabeli bazy danych. 6. Nie można jednak użyć opcji Truncate, gdy do tabeli odwołuje się ograniczenie klucza obcego, iw takim przypadku zamiast polecenia Truncate można użyć polecenia Usuń. 7. Wreszcie, obie te komendy mają zalety, a także wady w stosowaniu ich w systemach zarządzania bazami danych, a użytkownik powinien być świadomy odpowiedniego używania tych poleceń, aby osiągnąć dobre wyniki. |