حذف مقابل اقتطاع
يتم استخدام أمري SQL (لغة استعلام الهيكل) ، Delete و Truncate للتخلص من البيانات المخزنة في جداول في قاعدة بيانات. الحذف عبارة عن عبارة DML (لغة معالجة البيانات) وهي تزيل بعض أو كل صفوف الجدول. يتم استخدام "جملة Where" لتحديد الصفوف المطلوب حذفها ، وإذا لم يتم استخدام جملة Where مع عبارة Delete ، فإنها تزيل جميع البيانات الموجودة في الجدول. Truncate عبارة عن عبارة DDL (لغة تعريف البيانات) ، وهي تزيل البيانات بالكامل من الجدول. لا يؤدي كلا الأمرين إلى إتلاف بنية الجدول والمراجع إلى الجدول ، ويتم إزالة البيانات فقط حسب الحاجة.
حذف البيان
تسمح العبارةDelete للمستخدم بإزالة البيانات من جدول موجود في قاعدة بيانات بناءً على شرط محدد ، ويتم استخدام عبارة "Where" لتحديد هذا الشرط. يُشار إلى أمر الحذف على أنه تنفيذ مسجل ، لأنه يحذف صفًا واحدًا فقط في كل مرة ، ويحتفظ بإدخال لكل حذف صف في سجل المعاملات. لذلك ، هذا يجعل العملية أبطأ. الحذف عبارة عن جملة DML ، وبالتالي لا يتم الالتزام بها تلقائيًا أثناء تنفيذ الأمر. لذلك ، يمكن التراجع عن عملية الحذف للوصول إلى البيانات مرة أخرى ، إذا لزم الأمر. بعد تنفيذ أمر الحذف ، يجب الالتزام به أو التراجع عنه من أجل حفظ التغييرات بشكل دائم. لا يؤدي حذف العبارة إلى إزالة بنية الجدول من قاعدة البيانات. كما أنه لا يقوم بإلغاء تخصيص مساحة الذاكرة التي يستخدمها الجدول.
الصيغة النموذجية لأمر الحذف مذكورة أدناه.
حذف من
أو
حذف من حيث
بيان مقتطع
تزيل عبارة Truncate جميع البيانات من جدول موجود في قاعدة بيانات ، لكنها تحافظ على نفس بنية الجدول ، وكذلك قيود التكامل وامتيازات الوصول والعلاقات مع الجداول الأخرى. لذلك ، لا يلزم تحديد الجدول مرة أخرى ، ويمكن استخدام بنية الجدول القديمة ، إذا أراد المستخدم إعادة استخدام الجدول مرة أخرى. يقوم Truncate بإزالة البيانات بالكامل عن طريق إلغاء تخصيص صفحات البيانات المستخدمة للاحتفاظ بالبيانات ، ويتم الاحتفاظ فقط بعمليات إلغاء تخصيص الصفحة هذه في سجل المعاملات. لذلك ، يستخدم الأمر truncate عددًا أقل من موارد النظام وسجل العمليات للعملية ، لذلك فهو أسرع من الأوامر الأخرى ذات الصلة. Truncate هو أمر DDL ، لذلك يستخدم الالتزامات التلقائية قبل تنفيذ البيان وبعده. ومن ثم ، لا يمكن للمقطع المقتطع استعادة البيانات مرة أخرى بأي شكل من الأشكال. يحرر مساحة الذاكرة التي يستخدمها الجدول بعد التنفيذ. لكن لا يمكن تطبيق العبارة Truncate على الجداول التي يتم الرجوع إليها بواسطة قيود المفتاح الخارجي.
التالي هو بناء الجملة المشترك لبيان Truncate.
TRUNCATE TABLE
ما الفرق بين الحذف والاقتطاع؟
1. أوامر Delete and Truncate تزيل البيانات من الجداول الموجودة في قاعدة بيانات دون الإضرار ببنية الجدول أو أي مراجع أخرى للجدول.
2. ومع ذلك ، يمكن استخدام الأمر Delete لحذف صفوف معينة فقط في الجدول باستخدام شرط ذي صلة ، أو لحذف جميع الصفوف دون أي شرط ، بينما يمكن استخدام أمر Truncate فقط لحذف البيانات بالكامل في الجدول.
3. الحذف هو أمر DML ، ويمكنه التراجع عن العملية إذا لزم الأمر ، ولكن Truncate هو أمر DDL ، لذلك فهو عبارة عن التزام تلقائي ولا يمكن التراجع عنه بأي شكل من الأشكال. لذلك من المهم استخدام هذا الأمر بعناية في إدارة قواعد البيانات.
4. تستهلك العملية المقتطعة موارد النظام وموارد سجل المعاملات أقل من عملية الحذف ، وبالتالي ، يعتبر الاقتطاع أسرع من الحذف.
5. أيضًا ، لا يؤدي الحذف إلى إلغاء تخصيص المساحة التي يستخدمها الجدول ، بينما يحرر Truncate المساحة المستخدمة بعد التنفيذ ، لذلك لا يكون الحذف فعالًا في حالة حذف البيانات بالكامل من جدول قاعدة البيانات.
6. ومع ذلك ، لا يُسمح باستخدام Truncate عند الإشارة إلى الجدول بواسطة قيد مفتاح خارجي ، وفي هذه الحالة ، يمكن استخدام الأمر Delete بدلاً من Truncate.
7. أخيرًا ، كلا الأمرين لهما مزايا وعيوب أيضًا في تطبيقهما في أنظمة إدارة قواعد البيانات ويجب أن يكون المستخدم على دراية باستخدام هذه الأوامر بشكل مناسب لتحقيق نتائج جيدة.