Препоръчано, 2024

Избор На Редактора

Разлика между DELETE и TRUNCATE в SQL

DELETE и TRUNCATE са командите, които се използват за премахване на кортежите от отношение, но те се различават в много контексти. В SQL командата DELETE е команда за езика за манипулиране на данни, докато командата TRUNCATE е команда Data Language Definition . Въпреки това, точката, която ни позволява да правим разлика между DELETE и TRUNCATE е, че DELETE може да премахне определени кортежи от отношение, докато командата TRUNCATE премахва цели кортежи от отношение.

не трябва да спираме тук, има много други разлики между DELETE и TRUNCATE. Нека ги обсъдим с помощта на таблицата за сравнение, показана по-долу.

Сравнителна таблица

Основа за ComparsionИЗТРИЙпресечен
ОсновенМожете да зададете кортежа, който искате да изтриете.Той изтрива всички кортежи от една връзка.
езикDELETE е команда за езика за манипулиране на данни.TRUNCATE е команда за език за дефиниране на данни.
КЪДЕТОКомандата DELETE може да съдържа клауза WHERE.Командата TRUNCATE не съдържа клауза WHERE.
тригерКомандата DELETE активира спусъка на масата и ги кара да стрелят.Командата TRUNCATE не активира тригерите за огън.
заличаванеDELETE командата елиминира tuples един по един.TRUNCATE изтрива цялата страница с данни, съдържаща кортежите.
КлючалкаКомандата DELETE заключва реда / кортежа, преди да го изтрие.TRUNCATE команда за заключване на данни преди изтриване на таблични данни.
скоростКомандата DELETE действа по-бавно в сравнение с TRUNCATE.TRUNCATE е по-бърз в сравнение с DELETE.
транзакцияDELETE записва регистъра на транзакциите за всяко изтрито кортеж.TRUNCATE записва регистър на транзакциите за всяка изтрита страница с данни.
ВъзстановиКомандата DELETE може да бъде последвана или от COMMIT или ROLLBACK.Командата TRUNCATE не може да бъде ROLLBACK.

Дефиниция на DELETE

DELETE е команда DML. Задачата на командата DELETE е да изтрие или премахне кортежите от таблица или връзка. Използвайки DELETE, ние можем да елиминираме целия tuple, с всичките му стойности на атрибути от отношение. DELETE не премахва стойността на даден атрибут, на кортеж от отношението.

Можете да филтрирате кортежите, които искате да изтриете от таблица, като използвате клаузата WHERE . Ако зададете клауза WHERE в оператора DELETE, тогава тя ще изтрие само кортежите, които отговарят на условието WHERE. Но ако не посочите клаузата WHERE в оператора DELETE, то по подразбиране изтрива или елиминира всички кортежи от отношение. Клаузата WHERE в оператора DELETE може да съдържа вложени SELECT-FROM-WHERE изявления.

Синтаксисът на командата DELETE е следният:

DELETE FROM от table_name WHERE [ conditon ];

Командата DELETE работи само на една връзка или таблица в даден момент. В случай, че искате да изтриете кортеж от различни отношения, трябва да поставите различна команда DELETE за всяка от тях. Но изтриването на кортеж от една връзка може да наруши референтната цялост на базата данни, която може да бъде разрешена с помощта на тригери. Ако командата DELETE наруши референтната цялост, тогава всички референтни тригери (ако са зададени) се активират, което разпространява действието за изтриване на кортежите с различно отношение, което се отнася до изтритите кортежи.

Командата DELETE първо заключва реда или кортежа, който трябва да се изтрие, след което изтрива кортежа един по един . Следователно, той изисква повече ключалки и ресурси, които го правят по- бавен . Можете да направите промените, направени от оператора DELETE постоянно, като използвате COMMIT, или можете да нулирате базата данни, като използвате ROLLBACK .

Определение на TRUNCATE

TRUNCATE е подобно на командата DELETE, тъй като също така изтрива tuples от връзка. Разликата е, че изтрива цели кортежи от една връзка. Тъй като командата TRUNCATE се изпълнява, цели данни от таблицата се изтриват, като всеки кортеж заедно с всички негови стойности на атрибути се елиминират от таблицата. Но структурата на таблицата все още съществува в базата данни. Така че можете отново да въведете кортежите в таблицата. TRUNCATE е команда за език за дефиниране на данни.

Синтаксисът на командата TRUNCATE е следният:

TRUNCATE TABLE име_на_таблица ;

Подобно на DELETE, TRUNCATE не работи с таблични данни по ред. Вместо това, той работи на страниците с данни, които съхраняват данните в таблицата. Сега, когато TRUNCATE изтрива страниците с данни, той трябва да придобие заключването на страниците с данни, вместо на кортежите. Следователно, това води до по-малко изискване за брави и ресурс, което прави TRUNCATE по-бързо в сравнение с DELETE.

Изпълнението на командата TRUNCATE не активира никакви тригери, тъй като не работи с данни по ред по ред. TRUNCATE не може да се изпълни в случай, че таблицата е посочена от някой външен ключ . След като команда TRUNCATE изтрие данните от таблицата, тя никога няма да бъде възстановена .

Ключови разлики между DELETE и TRUNCATE в SQL

  1. Основната разлика между DELETE и TRUNCATE е, че с помощта на DELETE можете да изтриете определен кортеж от отношение. Но използването на TRUNCATE ще изтрие цели кортежи от една връзка.
  2. DELETE е DML команда, докато TRUNCATE е DDL команда.
  3. DELETE използва клаузата WHERE за филтриране на записите / кортежите, които трябва да бъдат изтрити. Въпреки това, TRUNCATE не изисква клауза WHERE, тъй като изтрива всички кортежи, така че няма нужда да филтрирате кортежите.
  4. DELETE активира референтните тригери, приложени към таблиците. Но TRUNCATE не пуска никакви тригери на масата.
  5. DELETE команда елиминира tuples един по един от таблицата, в реда, те се обработват. Въпреки това, TRUNCATE не работи на кортежите един по един. Вместо това, TRUNCATE работи на страницата с данни, която съхранява таблични данни.
  6. DELETE придобива заключването на кортежа, преди да го изтрие, докато TRUNCATE придобива заключването на страницата с данни преди да изтрие страницата с данни.
  7. TRUNCATE е по-бърза в сравнение с командата DELETE.
  8. DELETE записва регистъра на транзакциите за всеки кортеж, докато TRUNCATE записва дневника на транзакциите за всяка страница с данни.
  9. След като изтриете данните с TRUNCATE, никога няма да можете да ги възстановите, докато можете да възстановите данните си обратно, които сте изтрили с командата DELETE.

Заключение:

Ако искате да персонализирате изтриването на записи от таблицата, можете да използвате командата DELETE. Ако искате да изпразните таблицата, т.е. не искате да оставите никакви данни в таблица, използвайте командата TRUNCATE.

Top