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