DELETE FROM i TRUNCATE TABLE – jakie są różnice – Kurs SQL
W poprzednich wpisach omówiłem polecenia DELETE oraz TRUNCATE. Teraz poznamy najistotniejsze różnice występujące między nimi.
DELETE
- jest częścią
Data Manipulation Language - możliwość stosowania klauzuli
WHERE, możliwość wybrania rekordów do usunięcia - nie zmienia wartości licznika (
AUTO_INCREMENT), nawet w przypadku zerowania wszystkich rekordów ROLLBACK– możliwość cofnięcia operacjiDELETE, przywrócenie stanu tabeli sprzed usunięcia rekordówDELETEuruchamiatrigery, bierze pod uwagę więzy integralności- usuwając rekordy wpierw kolejno wpadają one do
cache, a następnie do logu transakcyjnego (kopia rekordu) - operacja
DELETEnie zwalnia miejsca po usunięciu danych, mimo że tabela wydaje się pusta, jej wielkość (zajmowane miejsce) pozostaje niezmieniona
TRUNCATE
- jest częścią
Data Definition Language - brak możliwości stosowania klauzuli
WHERE, zawsze usuwane są wszystkie rekordy - zeruje wartość licznika na tabeli (pola typu
AUTO_INCREMENT) ROLLBACK– nie na wszystkich silnikach bazodanowych można cofnąć operacjęTRUNCATETRUNCATEnie uruchamiatrigerów, nie bierze pod uwagę więzów integralności, operacja nie zostanie wykonana jeżeli na tabeli istnieją klucze obce- usuwając rekordy do logu transakcyjnego zapisuje się tylko sama operacja
TRUNCATE, bez danych - operacja
TRUNCATEzwalnia miejsce po usunięciu danych
Znasz jeszcze inne znaczące różnice o których zapomniałem napisać? Daj znać w komentarzu!
Nie wiedziałem, że delete nie zwalnia miejsca w tabeli, dzięki za info 🙂