1. Drop Tables:

  • التعريف: يُستخدم أمر DROP لحذف كائنات قاعدة البيانات مثل الجداول، الفهارس، المشاهدات (views)، إلخ.
  • الوظيفة: يقوم بحذف الكائن بشكل كامل مع بياناته وهيكله من قاعدة البيانات.
  • التأثير: عند استخدامه، يتم حذف الكائن نهائيًا ولا يمكن استرجاعه إلا إذا تم استخدام النسخ الاحتياطي.
  • الزمن: يعمل بسرعة كبيرة لأن العمليات التي يقوم بها النظام خلف الكواليس أقل تعقيدًا.
  • المعادلة:
    • DROP TABLE table_name;
  • الخصائص:
    • لا يمكن التراجع عن الحذف إلا من خلال النسخ الاحتياطي.
    • يتم إزالة كل القيود المرتبطة بالكائن، مثل الفهارس (indexes) والمفاتيح الخارجية (foreign keys).
    • لا يتم تنفيذ Triggers المرتبطة بالكائن المحذوف.

2. Truncate Table:

  • التعريف: يُستخدم أمر TRUNCATE لحذف جميع البيانات داخل جدول، لكنه يحتفظ بهيكل الجدول.
  • الوظيفة: يقوم بحذف جميع السجلات داخل الجدول بشكل سريع وفعال، لكنه لا يُحذف الهيكل نفسه.
  • التأثير: البيانات تُحذف بسرعة دون التأثير على الكائن نفسه، ولكن لا يتم حذف الفهارس أو المفاتيح.
  • الزمن: أسرع من DELETE في الحذف لأنه لا يسجل الحذف لكل سجل بشكل فردي.
  • المعادلة:
    • TRUNCATE TABLE table_name;
  • الخصائص:
    • لا يمكن التراجع عنه، إلا إذا كان لديك نسخ احتياطي.
    • لا يقوم بتفعيل Triggers.
    • لا يزيل القيم الافتراضية أو القيود مثل المفاتيح الخارجية.
    • لا يتم إلغاء عملية الحذف سجلًا تلو الآخر كما في DELETE، بل يتم مسح الجدول بأكمله في خطوة واحدة.
    • لا يؤثر على المساحة داخل قاعدة البيانات بالقدر نفسه مثل DELETE.

3. DELETE:

  • التعريف: يُستخدم أمر DELETE لحذف بيانات محددة من جدول بناءً على شرط معين.
  • الوظيفة: يقوم بحذف السجلات بناءً على شرط WHERE، ويمكن التحكم في السجلات التي يتم حذفها.
  • التأثير: يسمح بحذف جزء من البيانات في الجدول (وليس الجدول بالكامل).
  • الزمن: أبطأ من TRUNCATE و DROP لأن كل سجل يتم حذفه على حدة ويُسجل في السجل (log).
  • المعادلة:
    • DELETE FROM table_name WHERE condition;
  • الخصائص:
    • يمكن التراجع عن الحذف باستخدام المعامل ROLLBACK إذا كانت المعاملة في وضع Transactional.
    • يمكن تفعيل Triggers الخاصة بالحذف عند تنفيذ الأمر.
    • يمكن تحديد السجلات التي سيتم حذفها باستخدام شرط WHERE.
    • لا يغير الهيكل الخاص بالجدول مثل DROP.
    • لا يؤثر على الفهارس أو القيود مثل TRUNCATE أو DROP.

التفصيل بناءً على النقاط المختلفة:

Here’s the comparison between DROP, TRUNCATE, and DELETE in English:

CriterionDROPTRUNCATEDELETE
Effect on the ObjectCompletely deletes the object (table, index, etc.).Deletes only the data, keeping the structure.Deletes data based on a condition.
SpeedVery fast.Faster than DELETE, but slower than DROP.Slower than TRUNCATE and DROP.
RollbackCannot be rolled back unless a backup exists.Cannot be rolled back unless a backup exists.Can be rolled back using ROLLBACK.
Triggers ActivationDoes not activate triggers.Does not activate triggers.Activates triggers (if any).
LoggingLogs the entire drop operation (removal of schema).Minimal logging (only the deallocation of data pages).Fully logged for each row deleted.
Foreign Key ConstraintsCannot be executed if there are foreign key constraints.Cannot be executed if there are foreign key constraints.Can delete rows as long as foreign key constraints allow.
Usage ScenarioUsed to permanently remove a table, index, or other schema objects.Used to quickly remove all data in a table without removing the table itself.Used to delete specific rows from a table based on a condition.

الخلاصة:

  • الـDROP يُستخدم لحذف الكائنات بشكل كامل.
  • الـTRUNCATE يُستخدم لحذف جميع البيانات في جدول، ولكنه يحتفظ بهيكل الجدول.
  • الـDELETE يُستخدم لحذف بيانات معينة بناءً على شرط WHERE.

كل أمر من هذه الأوامر له استخداماته المخصصة بناءً على الاحتياج، ويجب أن يتم اختياره بعناية بناءً على نوع العملية المطلوبة.