Разликата между командата DELETE и TRUNCATE е най-честата част от въпроса за интервю. Те се използват главно за изтриване на данни от базата данни. Основната разлика между тях е, че командата за изтриване изтрива данни, без да нулира самоличността на таблица, докато командата truncate нулира идентичността на определена таблица . Тази статия обяснява пълния преглед на командата DELETE и TRUNCATE и техните разлики, които основно се използват взаимозаменяемо, но са напълно различни.
Какво представлява командата DELETE?
Това е DML или команда за манипулиране на данни използва се за изтриване на записи от таблица, които не са необходими в базата данни. Той премахва целия ред от таблицата и извежда броя на изтритите редове. Нуждаем се от разрешение за изтриване на целевата таблица, за да изпълним тази команда. Също така ни позволява да филтрираме и изтриваме всякакви конкретни записи, използвайки КЪДЕТО клауза от таблицата.
Той пояснява, че имаме резервно копие на нашата база данни, преди да изпълним тази команда, защото не можем да възстановим изтритите записи с помощта на тази заявка. Следователно, на архивиране на бази данни ни позволяват да възстановим данните, когато имаме нужда от тях в бъдеще.
Следният синтаксис обяснява командата DELETE за премахване на данни от таблицата:
DELETE FROM table_name WHERE condition;
Какво е команда TRUNCATE?
Съкратеният израз е a DDL или команда за език за дефиниране на данни използва се за премахване на пълни данни от таблицата, без да премахва структурата на таблицата. Не можем да използваме КЪДЕТО клауза с тази команда, така че филтрирането на записи да не е възможно. След като изпълним тази команда, ние не може да върне обратно изтритите данни тъй като дневникът не се поддържа, докато се изпълнява тази операция.
Командата truncate освобождава страници вместо редове и прави запис за освобождаващите страници вместо редове в регистрационните файлове на транзакциите. Тази команда заключва страниците вместо редове; по този начин изисква по-малко ключалки и ресурси. Обърнете внимание, че не можем да използваме командата truncate, когато таблица е посочена от чужд ключ или участва в индексиран изглед.
двоично дърво за търсене срещу двоично дърво
Следният синтаксис обяснява командата TRUNCATE за премахване на данни от таблицата:
TRUNCATE TABLE table_name;
Ключови разлики между DELETE и TRUNCATE
Следните точки обясняват разликите между командата delete и truncate:
- Операторът DELETE се използва, когато искаме да премахнем някои или всички записи от таблицата, докато операторът TRUNCATE ще изтрие цели редове от таблица.
- DELETE е DML команда, тъй като променя само данните от таблицата, докато TRUNCATE е DDL команда.
- Командата DELETE може да филтрира записа/кортежите с помощта на клаузата WHERE. Командата TRUNCATE обаче не позволява използването КЪДЕТО клауза, така че не можем да филтрираме редове, докато отрязваме.
- DELETE активира всички изтриване на тригери на масата да запали. При операцията за съкращаване обаче не се задействат тригери, тъй като тя не работи върху отделни редове.
- DELETE извършва изтриване ред по ред един по един от таблицата, в реда, в който са били обработени. TRUNCATE обаче работи със страници с данни вместо с редове, тъй като изтри всички данни от таблица наведнъж.
- Операторът DELETE изтрива само записи и не нулира идентичност на масата , докато TRUNCATE нулира самоличността на определена таблица.
- Командата DELETE изисква повече заключвания и ресурси на базата данни, тъй като получава заключването на всеки изтрит ред. Обратно, TRUNCATE придобива заключването на страницата с данни, преди да изтрие страницата с данни; по този начин изисква по-малко заключвания и малко ресурси.
- Изявлението DELETE прави запис в регистър на транзакциите за всеки изтрит ред, докато TRUNCATE записва регистъра на транзакциите за всяка страница с данни.
- Командата TRUNCATE е по-бързо отколкото командата DELETE, тъй като освобождава страниците с данни вместо редове и записва страници с данни вместо редове в регистрационните файлове на транзакциите.
- След като записът бъде изтрит с помощта на командата TRUNCATE, не можем да го възстановим обратно. За разлика от това можем да възстановим обратно изтритите данни, които сме премахнали от операцията DELETE.
Сравнителна диаграма на DELETE срещу TRUNCATE
Следващата сравнителна таблица обяснява основните им разлики по бърз начин:
База за сравнение | ИЗТРИЙ | ТРЪНЦИРАНЕ |
---|---|---|
Определение | Операторът за изтриване се използва за премахване на един или няколко записа от съществуваща таблица в зависимост от определеното условие. | Командата truncate премахва пълните данни от съществуваща таблица, но не и самата таблица. Той запазва структурата или схемата на таблицата. |
език | Това е DML (Data Manipulation Language) команда. | Това е DDL (Език за дефиниране на данни) команда. |
КЪДЕТО | Може да използва клаузата WHERE, за да филтрира конкретен ред или данни от таблицата. | Той не използва клаузата WHERE за филтриране на записи от таблицата. |
разрешение | Трябва да имаме разрешение за ИЗТРИВАНЕ, за да използваме тази команда. | Трябва да имаме разрешение ALTER, за да използваме тази команда. |
Работещ | Тази команда елиминира записите един по един. | Тази команда изтрива цялата страница с данни, съдържаща записите. |
Ключалка | Той ще заключи реда преди изтриване. | Това ще заключи страницата с данни преди изтриване. |
Идентификация на таблицата | Тази команда не нулира самоличността на таблицата, защото изтрива само данните. | Винаги нулира идентичността на таблицата. |
Транзакция | Той поддържа регистрационни файлове за транзакции за всеки изтрит запис. | Той не поддържа регистрационни файлове за транзакции за всяка изтрита страница с данни. |
Скорост | Скоростта му е ниска, защото поддържа дневника. | Изпълнението му е бързо, защото изтрива цели данни наведнъж, без да поддържа регистрационни файлове на транзакциите. |
Тригер | Тази команда може също да активира тригера, приложен върху масата, и да ги задейства. | Тази команда не активира тригерите, приложени върху масата, за да задействат. |
Възстанови | Позволява ни да възстановим изтритите данни чрез оператора COMMIT или ROLLBACK. | Не можем да възстановим изтритите данни след използване на тази команда. |
Индексиран изглед | Може да се използва с индексирани изгледи. | Не може да се използва с индексирани изгледи. |
пространство | Операторът DELETE заема повече пространство за транзакции, отколкото truncate, защото поддържа журнал за всеки изтрит ред. | Операторът TRUNCATE заема по-малко пространство за транзакции, защото поддържа регистър на транзакциите за цялата страница с данни вместо за всеки ред. |
Заключение
В тази статия направихме сравнение между командата delete и truncate. Заключихме, че командата DELETE се използва, когато искаме да персонализираме изтриването на записи от таблицата. И команда TRUNCATE се използва, когато не искаме да оставим никакви записи или данни в таблицата, т.е. искаме да изпразним таблицата.