Проверяет понимание различий между командами DROP и TRUNCATE в SQL, их влияния на структуру таблицы и данные.
DROP и TRUNCATE — это команды SQL, которые удаляют данные, но действуют по-разному. DROP относится к DDL (Data Definition Language) и удаляет всю таблицу, включая её определение, индексы, триггеры и права доступа. После выполнения DROP таблица полностью исчезает из базы данных. TRUNCATE также считается DDL в большинстве СУБД, но она удаляет только строки, сохраняя структуру таблицы для дальнейшего использования.
TRUNCATE освобождает выделенные под таблицу страницы данных, поэтому работает значительно быстрее, чем DELETE без WHERE, который удаляет строки по одной и логирует каждое изменение. Однако TRUNCATE нельзя использовать с условием WHERE — она всегда очищает всю таблицу. В отличие от DELETE, TRUNCATE не активирует триггеры на удаление строк, так как не выполняет построчную обработку.
-- Удалить таблицу полностью
DROP TABLE users;
-- Очистить таблицу, сохранив структуру
TRUNCATE TABLE users;
-- В транзакции можно откатить TRUNCATE
BEGIN;
TRUNCATE TABLE users;
ROLLBACK; -- таблица останется с даннымиВывод: DROP и TRUNCATE — мощные инструменты, но их необратимость требует осторожности. TRUNCATE предпочтителен для быстрой очистки больших таблиц, а DROP — для полного удаления объектов схемы.