Різниця між командами DELETE і TRUNCATE є найпоширенішою частиною запитання на співбесіді. Вони в основному використовуються для видалення даних з бази даних. Основна відмінність між ними полягає в тому, що оператор delete видаляє дані без скидання ідентичності таблиці, тоді як команда truncate скидає ідентифікатор конкретної таблиці. . У цій статті пояснюється повний огляд команд DELETE і TRUNCATE та їхні відмінності, які в основному використовуються як взаємозамінні, але абсолютно різні.
Що таке команда DELETE?
Це DML або команда обробки даних використовується для видалення записів із таблиці, які не потрібні в базі даних. Він видаляє повний рядок із таблиці та створює підрахунок видалених рядків. Для виконання цієї команди нам потрібен дозвіл на видалення цільової таблиці. Це також дозволяє нам фільтрувати та видаляти будь-які конкретні записи за допомогою ДЕ речення з табл.
Це пояснює, що у нас є резервна копія нашої бази даних перед виконанням цієї команди, оскільки ми не можемо відновити видалені записи за допомогою цього запиту. Тому резервне копіювання бази даних дозволяють нам відновлювати дані, коли вони нам знадобляться в майбутньому.
Наступний синтаксис пояснює команду DELETE для видалення даних із таблиці:
DELETE FROM table_name WHERE condition;
Що таке команда TRUNCATE?
Усічений оператор є a DDL або команда мови визначення даних використовується для видалення повних даних із таблиці без видалення структури таблиці. Ми не можемо використовувати ДЕ з цією командою, щоб фільтрація записів була неможливою. Після виконання цієї команди ми не може повернути видалені дані оскільки журнал не підтримується під час виконання цієї операції.
Команда truncate звільняє сторінки замість рядків і робить запис для сторінок звільнення замість рядків у журналах транзакцій. Ця команда блокує сторінки замість рядків; таким чином, для цього потрібно менше блокувань і ресурсів. Зверніть увагу, що ми не можемо використовувати інструкцію truncate, коли на таблицю посилається зовнішній ключ або бере участь в індексованому представленні.
java math.min
Наступний синтаксис пояснює команду 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
Наведена нижче порівняльна таблиця швидко пояснює їхні основні відмінності:
Основа порівняння | ВИДАЛИТИ | УСИЧАТИ |
---|---|---|
Визначення | Інструкція delete використовується для видалення одного або кількох записів із існуючої таблиці залежно від заданої умови. | Команда truncate видаляє всі дані з існуючої таблиці, але не саму таблицю. Він зберігає структуру або схему таблиці. |
Мова | Це команда DML (мова обробки даних). | Це команда DDL (мова визначення даних). |
ДЕ | Він може використовувати речення WHERE для фільтрації будь-якого конкретного рядка або даних із таблиці. | Він не використовує речення WHERE для фільтрації записів із таблиці. |
Дозвіл | Для використання цієї команди нам потрібен дозвіл DELETE. | Для використання цієї команди нам потрібен дозвіл ALTER. |
Працює | Ця команда видаляє записи один за одним. | Ця команда видаляє всю сторінку даних, що містить записи. |
Замок | Перед видаленням рядок буде заблоковано. | Це заблокує сторінку даних перед видаленням. |
Ідентичність таблиці | Ця команда не скидає ідентифікатор таблиці, оскільки вона лише видаляє дані. | Це завжди скидає ідентифікатор таблиці. |
Транзакція | Він підтримує журнали транзакцій для кожного видаленого запису. | Він не підтримує журнали транзакцій для кожної видаленої сторінки даних. |
швидкість | Його швидкість повільна, оскільки він підтримував журнал. | Його виконання відбувається швидко, оскільки він видаляє цілі дані за раз без збереження журналів транзакцій. |
Тригер | Ця команда також може активувати тригер, застосований до столу, і спричинити їх запуск. | Ця команда не активує тригери, застосовані до таблиці для запуску. |
Відновлення | Це дозволяє нам відновити видалені дані за допомогою оператора COMMIT або ROLLBACK. | Ми не можемо відновити видалені дані після виконання цієї команди. |
Індексований перегляд | Його можна використовувати з індексованими видами. | Його не можна використовувати з індексованими представленнями. |
космос | Інструкція DELETE займає більше місця для транзакцій, ніж truncate, оскільки вона веде журнал для кожного видаленого рядка. | Оператор TRUNCATE займає менше місця для транзакцій, оскільки він підтримує журнал транзакцій для всієї сторінки даних, а не для кожного рядка. |
Висновок
У цій статті ми порівняли оператор delete і truncate. Ми дійшли висновку, що команда DELETE використовується, коли ми хочемо налаштувати видалення записів із таблиці. А команда TRUNCATE використовується, коли ми не хочемо залишати жодних записів або даних у таблиці, тобто ми хочемо очистити таблицю.