Różnica między poleceniami DELETE i TRUNCATE jest najczęstszą częścią pytania na rozmowie kwalifikacyjnej. Stosowane są głównie do usuwania danych z bazy danych. Główna różnica między nimi polega na tym, że instrukcja usuwania usuwa dane bez resetowania tożsamości tabeli, podczas gdy polecenie truncate resetuje tożsamość konkretnej tabeli . W tym artykule wyjaśniono pełny przegląd poleceń DELETE i TRUNCATE oraz różnic między nimi, które są używane zamiennie, ale są zupełnie inne.
Co to jest polecenie DELETE?
To jest DML lub polecenie manipulacji danymi służy do usuwania rekordów z tabeli, które nie są wymagane w bazie danych. Usuwa cały wiersz z tabeli i wyświetla liczbę usuniętych wierszy. Aby wykonać to polecenie, potrzebujemy uprawnienia do usuwania tabeli docelowej. Pozwala nam także filtrować i usuwać określone rekordy za pomocą GDZIE klauzula z tabeli.
Wyjaśnia, że przed wykonaniem tego polecenia mamy kopię zapasową naszej bazy danych, ponieważ nie możemy odzyskać usuniętych rekordów za pomocą tego zapytania. Dlatego też kopie zapasowe baz danych pozwalają nam przywrócić dane, kiedy tylko będziemy ich potrzebować w przyszłości.
Następująca składnia wyjaśnia polecenie DELETE służące do usuwania danych z tabeli:
DELETE FROM table_name WHERE condition;
Co to jest polecenie TRUNCATE?
Skrócona instrukcja to a Polecenie języka DDL lub definicji danych służy do usuwania całych danych z tabeli bez usuwania struktury tabeli. Nie możemy skorzystać z GDZIE klauzulę z tym poleceniem, dzięki czemu filtrowanie rekordów nie będzie możliwe. Po wykonaniu tego polecenia my nie można przywrócić usuniętych danych ponieważ dziennik nie jest prowadzony podczas wykonywania tej operacji.
Polecenie truncate cofa alokację pliku strony zamiast wierszy i tworzy wpis dla stron zwalniających alokację zamiast wierszy w dziennikach transakcji. To polecenie blokuje strony zamiast wierszy; dlatego wymaga mniej zamków i zasobów. Należy pamiętać, że nie możemy użyć instrukcji truncate, gdy tabela odwołuje się do klucza obcego lub uczestniczy w widoku indeksowanym.
kod c abs
Następująca składnia wyjaśnia polecenie TRUNCATE służące do usuwania danych z tabeli:
TRUNCATE TABLE table_name;
Kluczowe różnice między DELETE i TRUNCATE
Poniższe punkty wyjaśniają różnice między poleceniem usuwania i obcinania:
- Instrukcji DELETE używamy, gdy chcemy usunąć część lub wszystkie rekordy z tabeli, natomiast instrukcji TRUNCATE usuniemy całe wiersze z tabeli.
- DELETE jest poleceniem DML, ponieważ modyfikuje tylko dane w tabeli, podczas gdy TRUNCATE jest poleceniem DDL.
- Polecenie DELETE może filtrować rekord/krotki przy użyciu klauzuli WHERE. Jednak polecenie TRUNCATE nie pozwala na użycie GDZIE klauzulę, więc nie możemy filtrować wierszy podczas obcinania.
- DELETE aktywuje wszystko usuń wyzwalacze na stole do odpalenia. Jednak w przypadku operacji obcinania nie są uruchamiane żadne wyzwalacze, ponieważ nie działa ona na pojedynczych wierszach.
- DELETE usuwa wiersz po wierszu z tabeli, w kolejności ich przetwarzania. Jednak TRUNCATE działa na stronach danych, a nie na wierszach, ponieważ jednocześnie usuwał całe dane tabeli.
- Instrukcja DELETE usuwa tylko rekordy i nie resetuje tożsamość stołu , podczas gdy TRUNCATE resetuje tożsamość określonej tabeli.
- Polecenie DELETE wymaga więcej blokad i zasobów bazy danych, ponieważ uzyskuje blokadę w każdym usuniętym wierszu. Natomiast TRUNCATE blokuje stronę danych przed usunięciem strony danych; dlatego wymaga mniej zamków i niewielu zasobów.
- Instrukcja DELETE powoduje dokonanie wpisu w pliku dziennik transakcji dla każdego usuniętego wiersza, podczas gdy TRUNCATE rejestruje dziennik transakcji dla każdej strony danych.
- Polecenie TRUNCATE to szybciej niż polecenie DELETE, ponieważ zwalnia strony danych zamiast wierszy i rejestruje strony danych zamiast wierszy w dziennikach transakcji.
- Po usunięciu rekordu za pomocą polecenia TRUNCATE nie możemy go odzyskać. Natomiast możemy odzyskać usunięte dane, które usunęliśmy w wyniku operacji DELETE.
Tabela porównawcza DELETE i TRUNCATE
Poniższa tabela porównawcza wyjaśnia w szybki sposób ich główne różnice:
Podstawa porównania | USUWAĆ | ŚCIĘTY |
---|---|---|
Definicja | Instrukcja usuwania służy do usuwania jednego lub wielu rekordów z istniejącej tabeli, w zależności od określonego warunku. | Polecenie truncate usuwa całe dane z istniejącej tabeli, ale nie z samej tabeli. Zachowuje strukturę lub schemat tabeli. |
Język | Jest to polecenie DML (język manipulacji danymi). | Jest to polecenie DDL (język definicji danych). |
GDZIE | Może używać klauzuli WHERE do filtrowania dowolnego konkretnego wiersza lub danych z tabeli. | Nie używa klauzuli WHERE do filtrowania rekordów z tabeli. |
Pozwolenie | Aby użyć tego polecenia, musimy mieć uprawnienia DELETE. | Aby użyć tego polecenia, musimy mieć uprawnienia ALTER. |
Pracujący | To polecenie eliminuje rekordy jeden po drugim. | To polecenie usuwa całą stronę danych zawierającą rekordy. |
Zamek | Zablokuje wiersz przed usunięciem. | Spowoduje to zablokowanie strony danych przed usunięciem. |
Tożsamość tabeli | To polecenie nie resetuje tożsamości tabeli, ponieważ usuwa jedynie dane. | Zawsze resetuje tożsamość tabeli. |
Transakcja | Utrzymuje dzienniki transakcji dla każdego usuniętego rekordu. | Nie prowadzi dzienników transakcji dla każdej usuniętej strony danych. |
Prędkość | Jego prędkość jest niska, ponieważ utrzymuje kłodę. | Jego wykonanie jest szybkie, ponieważ usuwa całe dane na raz, bez konieczności utrzymywania dzienników transakcji. |
Spust | To polecenie może również aktywować wyzwalacz zastosowany na stole i spowodować ich uruchomienie. | To polecenie nie aktywuje wyzwalaczy zastosowanych na stole do uruchomienia. |
Przywrócić | Pozwala nam przywrócić usunięte dane za pomocą instrukcji COMMIT lub ROLLBACK. | Po wykonaniu tego polecenia nie możemy przywrócić usuniętych danych. |
Indeksowany widok | Można go używać z widokami indeksowanymi. | Nie można go używać z widokami indeksowanymi. |
Przestrzeń | Instrukcja DELETE zajmuje więcej miejsca na transakcję niż obcięcie, ponieważ przechowuje dziennik dla każdego usuniętego wiersza. | Instrukcja TRUNCATE zajmuje mniej miejsca na transakcje, ponieważ przechowuje dziennik transakcji dla całej strony danych, a nie dla każdego wiersza. |
Wniosek
W tym artykule dokonaliśmy porównania instrukcji usuwania i obcinania. Doszliśmy do wniosku, że polecenia DELETE używa się, gdy chcemy dostosować usuwanie rekordów z tabeli. Natomiast komendy TRUNCATE używamy, gdy nie chcemy pozostawić w tabeli żadnych rekordów ani danych, czyli chcemy opróżnić tabelę.