DELETE — команда DML. Удаляет строки по условию, для каждой срабатывают триггеры и проверки внешних ключей, каждая строка попадает в журнал. Полностью транзакционна. В PostgreSQL строки лишь помечаются удалёнными (MVCC), место освобождает VACUUM — после удаления половины таблицы файл не уменьшится.
TRUNCATE — команда DDL. Не перебирает строки, а освобождает страницы таблицы целиком — мгновенно даже для миллиардов строк. Особенности: нет WHERE, не срабатывают построчные триггеры, берётся эксклюзивная блокировка таблицы, последовательности можно сбросить (RESTART IDENTITY), нельзя выполнить на таблице, на которую ссылаются внешние ключи, без CASCADE. В PostgreSQL TRUNCATE транзакционен и откатывается; в MySQL и Oracle вызывает неявный коммит.
DROP — удаляет таблицу вместе со структурой, индексами, ограничениями и правами.
Для больших объёмов удаляют не DELETE на всю таблицу, а: TRUNCATE, если нужно всё; удаление пачками по индексу; или партиционирование по времени — старая партиция отключается и удаляется мгновенно (DETACH + DROP).