Kilka istotnych roznic:
Polecenie SQL > TRUNCATE:
- jest poleceniem typu DDL (Data Definition Language), z tego powodu dla tego polecenia nie mają zastosowania takie polecenia jak: COMMIT i ROLLBACK
(wyjątkami są tutaj PostgreSQL i Microsoft SQL Server, których implementacja polecenia TRUNCATE pozwala na użycie polecenia w transakcji)
- nie można cofnąć operacji usunięcia rekordów, następuje ona automatycznie i jest nieodwracalna (poza powyższymi wyjątkami)
- usuwa wszystkie rekordy z tabeli, nie można ograniczyć rekordów do usunięcia
- zwalnia zajmowane miejsce przez dane w tabeli (w przestrzeni tabel TABLESPACE - na dysku)
- powoduje wyzerowanie wartości SEQUENCE przypisanej do tabeli. Można jednak zastosować opcje: RESTART IDENTITY lub CONTINUE IDENTITY
- TRUNCATE działa szybciej niż DELETE
- w systemie Oracle TRUNCATE jest niejawnie poprzedzony i zatwierdzany poleceniem COMMIT
Polecenie SQL > DELETE:
- jest poleceniem typu DML (Data Manipulation Language), z tego powodu dla tego polecenia mają zastosowanie takie polecenia jak: COMMIT i ROLLBACK
- można cofnąć operację usunięcia rekordów za pomocą polecenia ROLLBACK
- usuwa wszystkie lub niektóre rekordy z tabeli, można ograniczyć rekordy do usunięcia za pomocą klauzuli WHERE
- nie zwalnia zajmowanego miejsca przez dane w tabeli (w przestrzeni tabel TABLESPACE - na dysku)
- nie powoduje wyzerowania wartości SEQUENCE przypisanej do tabeli
- DELETE działa wolniej niż TRUNCATE
ps: "Jesli pisze: DROP DATABASE baza (MsSQL 2000) to mam komunikat ze nie moge jej skasowac poniewaz jest aktualnie w uzyciu?" - jezeli zatrzymasz dzialanie bazy danych, to powinno udac sie polecenie, ktore wykonujesz.
pozdr