تفاوت بین DELETE و TRUNCATE در SQL SERVER

دستور Delete :

از دستور Delete برای حذف رکورد های جداول استفاده می  شود .
شکل این دستور به صورت زیر  می باشد :

DELETE FROM table_name [WHERE condition];

بخش Where در دستور Delete اختیاری می باشد و می توان از نوشتن آن صرف نظر کرد .اگر بخش where را  از دستور Delete حذف کنیم ، تمامی رکورد های جدول مورد نظر را حذف می کند و در حالتی که  بخش where را بنویسیم حذف رکورد ها فقط محدود به شرط مورد نظر می شود .

مثال های از  Delete :

برای حذف یک کارمند با  شماره Id=100 از جدول Employee  دستور delete به صورت زیر می باشد  :

DELETE FROM employee WHERE id = 100;

 و برای حذف کل رکورد های رکورد های Employee دستور Delete مانند دستور قبل می باشد فقط با این تفاوت که بخش where حذف می شود .

DELETE FROM employee;

 دستور Truncate :

از دستور Truncate برای حذف تمامی رکورد های از یک جدول استفاده  می شود  و فضای اختصاص داده شده به دیتاهای آن جدول را آزاد می کند.

ساختار دستور Truncate به صورت زیر می باشد :

TRUNCATE TABLE table_name;

مثال های از دستور  Truncate به صورت زیر می باشد .

TRUNCATE TABLE employee;

 دستور فوق باعث حذف تمامی رکوردهای جدول Employee می شود .

تفاوت های  دستور Truncate با دستور Delete :

دستور Delete :
این دستور در حالتی که دارای بخش where باشد  فقط رکوردهایی از جدول را حذف می کند  در غیر اینصورت  تمامی رکوردهای جدول را حذف می کند . اما فضاهای اختصاص داده شده به رکورد های اختصاص یافته آزاد نمی شود .
دستور Truncate :
از این دستور هم برای حذف تمامی رکوردهای جداول استفاده می شود با این تفاوت که بعد از حذف فضای اختصاص یافته به داده های آزاد می شود .

تفاوت اول :

آزد سازی حافظه در هنگام حذف رکوردها .

تفاوت دوم  :
بعد از  دستور Delete  می توان  از commit  یا rollback  جهت اینکه تغییرات اعمل شود و یا داده های حذف شده  را undo کنیم .
با commit تغییرات انجام شده را نهایی می کنیم و یا اگر نیاز به بازگشت داده ها باشد می توان از Rollback استفاده کرد . قطعه کد sql  زیر نحوه کارکرد commit را نشان می دهد :

SQL> SELECT COUNT(*) FROM emp;

  COUNT(*)
----------
        14

SQL> DELETE FROM emp WHERE job = 'CLERK';

4 rows deleted.

SQL> COMMIT;

Commit complete.

SQL> SELECT COUNT(*) FROM emp;

  COUNT(*)
----------
        10

 در هنگام استفاده از  Truncate نمی توان از دستور Roll back جهت بازگرداندن تغییرات استفاده کرد
دستور Drop :
از این دستور برای حذف جداول از یک دیتابیس استفاده می شود . همه ی رکوردهای جدول و ایندکس هایی که بر روی آن جدول اضافه شده اند حذف خواهند شد . و برای بازگرداندن به عقب نمی توان از دستور Roll back استفاده نمود .
مثالی در این زمینه :

SQL> DROP TABLE emp;

Table dropped.

SQL> SELECT * FROM emp;
SELECT * FROM emp
              *
ERROR at line 1:
ORA-00942: table or view does not exist

 


توسط : عثمان رحیمی  8 ماه قبل ، چهارشنبه 20 اسفند 1393 ساعت 16:40  0  4815

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط