logo

الفرق بين أمر الحذف والاقتطاع

الفرق بين أمر DELETE و TRUNCATE هو الجزء الأكثر شيوعًا في سؤال المقابلة. يتم استخدامها بشكل أساسي لحذف البيانات من قاعدة البيانات. والفرق الرئيسي بينهما هو أن عبارة الحذف تحذف البيانات دون إعادة تعيين هوية الجدول، بينما يقوم أمر الاقتطاع بإعادة تعيين هوية جدول معين . تشرح هذه المقالة نظرة عامة كاملة على الأمر DELETE وTRUNCATE والاختلافات بينهما التي يتم استخدامها بشكل أساسي بالتبادل ولكنها مختلفة تمامًا.

حذف مقابل اقتطاع الأمر

ما هو أمر الحذف؟

إنها DML أو أمر معالجة البيانات يستخدم لحذف السجلات من جدول غير مطلوب في قاعدة البيانات. يقوم بإزالة الصف الكامل من الجدول وينتج عدد الصفوف المحذوفة. نحتاج إلى إذن الحذف في الجدول الهدف لتنفيذ هذا الأمر. كما يسمح لنا بتصفية وحذف أي سجلات محددة باستخدام أين جملة من الجدول.

يوضح أن لدينا نسخة احتياطية من قاعدة البيانات الخاصة بنا قبل تنفيذ هذا الأمر لأنه لا يمكننا استعادة السجلات المحذوفة باستخدام هذا الاستعلام. لذلك، النسخ الاحتياطية لقاعدة البيانات السماح لنا باستعادة البيانات عندما نحتاج إليها في المستقبل.

يشرح بناء الجملة التالي أمر DELETE لإزالة البيانات من الجدول:

 DELETE FROM table_name WHERE condition; 

ما هو أمر TRUNCATE؟

البيان المقطوع هو DDL أو أمر لغة تعريف البيانات يستخدم لإزالة البيانات الكاملة من الجدول دون إزالة بنية الجدول. لا يمكننا استخدام أين جملة بهذا الأمر، بحيث لا تكون تصفية السجلات ممكنة. بعد تنفيذ هذا الأمر، نحن لا يمكن استرجاع البيانات المحذوفة لأنه لا يتم الاحتفاظ بالسجل أثناء تنفيذ هذه العملية.

يقوم الأمر truncate بإلغاء تخصيص ملف الصفحات بدلاً من الصفوف ويقوم بإدخال صفحات إلغاء التخصيص بدلاً من الصفوف في سجلات المعاملات. يقوم هذا الأمر بتأمين الصفحات بدلاً من الصفوف؛ وبالتالي، فإنه يتطلب أقفالًا وموارد أقل. لاحظ أنه لا يمكننا استخدام العبارة المقتطعة عندما تتم الإشارة إلى جدول بواسطة مفتاح خارجي أو يشارك في طريقة عرض مفهرسة.

رقم جافا إلى السلسلة

يشرح بناء الجملة التالي أمر TRUNCATE لإزالة البيانات من الجدول:

 TRUNCATE TABLE table_name; 

الاختلافات الرئيسية بين DELETE و TRUNCATE

توضح النقاط التالية الاختلافات بين أمر الحذف والاقتطاع:

  1. يتم استخدام عبارة DELETE عندما نريد إزالة بعض أو كل السجلات من الجدول، بينما تقوم عبارة TRUNCATE بحذف الصفوف بأكملها من الجدول.
  2. DELETE هو أمر DML لأنه يعدل بيانات الجدول فقط، في حين أن TRUNCATE هو أمر DDL.
  3. يمكن لأمر DELETE تصفية السجل/الصفوف باستخدام جملة WHERE. ومع ذلك، لا يسمح الأمر TRUNCATE باستخدامه أين جملة، لذلك لا يمكننا تصفية الصفوف أثناء الاقتطاع.
  4. DELETE ينشط الكل حذف المشغلات على الطاولة لاطلاق النار. ومع ذلك، لا يتم إطلاق أي مشغلات على العملية المقتطعة لأنها لا تعمل على صفوف فردية.
  5. يقوم DELETE بإجراء الحذف صفًا تلو الآخر من الجدول، بالترتيب الذي تمت معالجته به. ومع ذلك، يعمل TRUNCATE على صفحات البيانات بدلاً من الصفوف لأنه يحذف بيانات الجدول بالكامل في المرة الواحدة.
  6. عبارة DELETE تحذف السجلات فقط ولا تعيد تعيينها هوية الجدول ، بينما يقوم TRUNCATE بإعادة تعيين هوية جدول معين.
  7. يتطلب أمر DELETE المزيد من الأقفال وموارد قاعدة البيانات لأنه يحصل على القفل في كل صف محذوف. في المقابل، يحصل TRUNCATE على القفل على صفحة البيانات قبل حذف صفحة البيانات؛ وبالتالي، فإنه يتطلب أقفالًا أقل وموارد قليلة.
  8. تقوم عبارة DELETE بإدخال إدخال في سجل المعاملات لكل صف محذوف، بينما يقوم TRUNCATE بتسجيل سجل المعاملات لكل صفحة بيانات.
  9. أمر TRUNCATE هو أسرع بدلاً من أمر DELETE لأنه يقوم بإلغاء تخصيص صفحات البيانات بدلاً من الصفوف ويسجل صفحات البيانات بدلاً من الصفوف في سجلات المعاملات.
  10. بمجرد حذف السجل باستخدام الأمر TRUNCATE، لا يمكننا استعادته مرة أخرى. في المقابل، يمكننا استعادة البيانات المحذوفة التي قمنا بإزالتها من عملية الحذف.

DELETE مقابل TRUNCATE مخطط المقارنة

يشرح مخطط المقارنة التالي الاختلافات الرئيسية بينهما بطريقة سريعة:

أساس المقارنة يمسح اقتطاع
تعريف يتم استخدام عبارة الحذف لإزالة سجلات فردية أو متعددة من جدول موجود اعتمادًا على الشرط المحدد. يقوم الأمر truncate بإزالة البيانات الكاملة من جدول موجود وليس الجدول نفسه. يحافظ على بنية الجدول أو المخطط.
لغة إنه أمر DML (لغة معالجة البيانات). إنه أمر DDL (لغة تعريف البيانات).
أين يمكنه استخدام جملة WHERE لتصفية أي صف أو بيانات محددة من الجدول. ولا يستخدم جملة WHERE لتصفية السجلات من الجدول.
إذن نحن بحاجة إلى الحصول على إذن DELETE لاستخدام هذا الأمر. نحن بحاجة إلى الحصول على إذن ALTER لاستخدام هذا الأمر.
عمل يقوم هذا الأمر بحذف السجلات واحدًا تلو الآخر. يقوم هذا الأمر بحذف صفحة البيانات بأكملها التي تحتوي على السجلات.
قفل سيتم قفل الصف قبل الحذف. سيتم قفل صفحة البيانات قبل الحذف.
هوية الجدول لا يقوم هذا الأمر بإعادة تعيين هوية الجدول لأنه يحذف البيانات فقط. يقوم دائمًا بإعادة تعيين هوية الجدول.
عملية ويحتفظ بسجلات المعاملات لكل سجل محذوف. ولا يحتفظ بسجلات المعاملات لكل صفحة بيانات محذوفة.
سرعة سرعته بطيئة لأنه يحتفظ بالسجل. يتم تنفيذه بسرعة لأنه يحذف البيانات بأكملها في وقت واحد دون الاحتفاظ بسجلات المعاملات.
مشغل يمكن لهذا الأمر أيضًا تنشيط المشغل المطبق على الطاولة ويؤدي إلى إطلاقها. لا يقوم هذا الأمر بتنشيط المشغلات المطبقة على الطاولة لإطلاق النار.
يعيد يسمح لنا باستعادة البيانات المحذوفة باستخدام عبارة COMMIT أو ROLLBACK. لا يمكننا استعادة البيانات المحذوفة بعد استخدام تنفيذ هذا الأمر.
عرض مفهرسة يمكن استخدامه مع طرق العرض المفهرسة. لا يمكن استخدامه مع طرق العرض المفهرسة.
فضاء تشغل عبارة DELETE مساحة معاملة أكبر من تلك التي يتم اقتطاعها لأنها تحتفظ بسجل لكل صف محذوف. تشغل عبارة TRUNCATE مساحة معاملة أقل لأنها تحتفظ بسجل معاملات لصفحة البيانات بأكملها بدلاً من كل صف.

خاتمة

في هذه المقالة، قمنا بإجراء مقارنة بين بيان الحذف والاقتطاع. لقد خلصنا إلى أنه يتم استخدام أمر DELETE عندما نريد تخصيص حذف السجلات من الجدول. ويتم استخدام أمر TRUNCATE عندما لا نريد ترك أي سجلات أو بيانات في الجدول، أي نريد إفراغ الجدول.