حذف در مقابل کوتاه کردن
هر دو دستور SQL (Structure Query Language)، Delete و Truncate برای خلاص شدن از شر داده های ذخیره شده در جداول در پایگاه داده استفاده می شوند. Delete یک عبارت DML (زبان دستکاری داده ها) است و برخی یا همه ردیف های جدول را حذف می کند. از "Where clause" برای تعیین ردیف هایی که باید حذف شوند استفاده می شود و اگر عبارت Where با دستور Delete استفاده نشود، تمام داده های جدول را حذف می کند. Truncate یک عبارت DDL (زبان تعریف داده) است و کل داده ها را از جدول حذف می کند. هر دوی این دستورات ساختار جدول و ارجاعات به جدول را از بین نمی برند و فقط داده ها در صورت نیاز حذف می شوند.
حذف بیانیه
دستور Delete به کاربر اجازه می دهد تا داده ها را از یک جدول موجود در پایگاه داده بر اساس یک شرط مشخص حذف کند، و از "Where clause" برای تعیین این شرط استفاده می شود. دستور Delete به عنوان یک اجرای ثبت شده نامیده می شود، زیرا هر بار فقط یک ردیف را حذف می کند و یک ورودی برای حذف هر ردیف در گزارش تراکنش نگه می دارد. بنابراین، این باعث می شود که عملیات کندتر شود. Delete یک عبارت DML است و بنابراین هنگام اجرای دستور به طور خودکار انجام نمی شود. بنابراین، در صورت لزوم، عملیات حذف را می توان برای دسترسی مجدد به داده ها بازگرداند. پس از اجرای دستور Delete، باید آن را متعهد یا عقب انداخت تا تغییرات به طور دائم ذخیره شوند. دستور Delete ساختار جدول جدول را از پایگاه داده حذف نمی کند. همچنین فضای حافظه استفاده شده توسط جدول را اختصاص نمی دهد.
سینتکس معمولی برای دستور Delete در زیر بیان شده است.
حذف از
یا
حذف از کجا
قطع بیانیه
دستور Truncate تمام داده ها را از یک جدول موجود در پایگاه داده حذف می کند، اما همان ساختار جدول، همچنین محدودیت های یکپارچگی، امتیازات دسترسی و روابط با سایر جداول را حفظ می کند. بنابراین، نیازی به تعریف مجدد جدول نیست و اگر کاربر بخواهد دوباره از جدول استفاده کند، می توان از ساختار جدول قدیمی استفاده کرد. Truncate کل دادهها را با جدا کردن صفحات دادهای که برای نگهداری دادهها استفاده میشوند حذف میکند و فقط این تخصیصهای صفحه در گزارش تراکنش نگهداری میشوند. بنابراین، دستور کوتاه کردن تنها از منابع کمتری سیستم و گزارش تراکنش برای عملیات استفاده می کند، بنابراین سریعتر از سایر دستورات مرتبط است. Truncate یک دستور DDL است، بنابراین از تعهدات خودکار قبل و بعد از اجرای دستور استفاده می کند. از این رو، بریدن نمی تواند به هیچ وجه داده ها را دوباره به عقب برگرداند. فضای حافظه مورد استفاده جدول را پس از اجرا آزاد می کند. اما دستور Truncate را نمی توان روی جداولی که توسط محدودیت های کلید خارجی ارجاع داده شده اند اعمال کرد.
Following نحو رایج برای عبارت Truncate است.
TRUNCATE TABLE
تفاوت بین Delete و Truncate چیست؟
1. دستورات Delete و Truncate داده ها را از جداول موجود در پایگاه داده بدون آسیب رساندن به ساختار جدول یا سایر ارجاعات به جدول حذف می کنند.
2. با این حال، دستور Delete را می توان برای حذف ردیف های خاص در یک جدول با استفاده از یک شرط مرتبط یا برای حذف تمام ردیف ها بدون هیچ شرطی استفاده کرد، در حالی که دستور Truncate را می توان فقط برای حذف کل داده های جدول استفاده کرد.
3. Delete یک دستور DML است و در صورت لزوم میتواند عملیات را به عقب برگرداند، اما Truncate یک دستور DDL است، بنابراین یک دستور commit خودکار است و به هیچ وجه قابل برگشت نیست. بنابراین مهم است که از این دستور در مدیریت پایگاه داده با دقت استفاده کنید.
4. عملیات Truncate نسبت به عملیات Delete منابع سیستم و منابع گزارش تراکنش کمتری مصرف می کند، بنابراین، Truncate سریعتر از Delete در نظر گرفته می شود.
5. همچنین، Delete فضای استفاده شده توسط جدول را اختصاص نمی دهد، در حالی که Truncate فضای مورد استفاده را پس از اجرا آزاد می کند، بنابراین حذف در صورت حذف کل داده ها از جدول پایگاه داده کارآمد نیست.
6. با این حال، وقتی جدول توسط یک محدودیت کلید خارجی ارجاع داده می شود، اجازه استفاده از Truncate داده نمی شود، و در این صورت، می توان از دستور Delete به جای Truncate استفاده کرد.
7. در نهایت هر دوی این دستورات مزایا و معایبی در بکارگیری آنها در سیستم های مدیریت پایگاه داده دارند و کاربر باید از استفاده مناسب از این دستورات برای دستیابی به نتایج خوب آگاه باشد.