تفاوت بین DELETE و TRUNCATE در SQL SERVER
دستور Delete :
از دستور Delete برای حذف رکورد های جداول استفاده می شود .
شکل این دستور به صورت زیر می باشد :
1 |
DELETE FROM table_name [WHERE condition]; |
بخش Where در دستور Delete اختیاری می باشد و می توان از نوشتن آن صرف نظر کرد .اگر بخش where را از دستور Delete حذف کنیم ، تمامی رکورد های جدول مورد نظر را حذف می کند و در حالتی که بخش where را بنویسیم حذف رکورد ها فقط محدود به شرط مورد نظر می شود .
مثال های از Delete :
برای حذف یک کارمند با شماره Id=100 از جدول Employee دستور delete به صورت زیر می باشد :
1 |
DELETE FROM employee WHERE id = 100; |
و برای حذف کل رکورد های رکورد های Employee دستور Delete مانند دستور قبل می باشد فقط با این تفاوت که بخش where حذف می شود
1 |
DELETE FROM employee; |
دستور Truncate :
از دستور Truncate برای حذف تمامی رکورد های از یک جدول استفاده می شود و فضای اختصاص داده شده به دیتاهای آن جدول را آزاد می کند.
ساختار دستور Truncate به صورت زیر می باشد :
1 |
TRUNCATE TABLE table_name; |
مثال های از دستور Truncate به صورت زیر می باشد .
1 |
TRUNCATE TABLE employee; |
دستور فوق باعث حذف تمامی رکوردهای جدول Employee می شود .
تفاوت های دستور Truncate با دستور Delete :
دستور Delete :
این دستور در حالتی که دارای بخش where باشد فقط رکوردهایی از جدول را حذف می کند در غیر اینصورت تمامی رکوردهای جدول را حذف می کند . اما فضاهای اختصاص داده شده به رکورد های اختصاص یافته آزاد نمی شود .
دستور Truncate :
از این دستور هم برای حذف تمامی رکوردهای جداول استفاده می شود با این تفاوت که بعد از حذف فضای اختصاص یافته به داده های آزاد می شود .
تفاوت اول :
آزد سازی حافظه در هنگام حذف رکوردها .
تفاوت دوم :
بعد از دستور Delete می توان از commit یا rollback جهت اینکه تغییرات اعمل شود و یا داده های حذف شده را undo کنیم .
با commit تغییرات انجام شده را نهایی می کنیم و یا اگر نیاز به بازگشت داده ها باشد می توان از Rollback استفاده کرد . قطعه کد sql زیر نحوه کارکرد commit را نشان می دهد :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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 استفاده نمود .
مثالی در این زمینه :
1 2 3 4 5 6 7 8 9 |
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 |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.