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:
| Criterion | DROP | TRUNCATE | DELETE |
|---|---|---|---|
| Effect on the Object | Completely deletes the object (table, index, etc.). | Deletes only the data, keeping the structure. | Deletes data based on a condition. |
| Speed | Very fast. | Faster than DELETE, but slower than DROP. | Slower than TRUNCATE and DROP. |
| Rollback | Cannot be rolled back unless a backup exists. | Cannot be rolled back unless a backup exists. | Can be rolled back using ROLLBACK. |
| Triggers Activation | Does not activate triggers. | Does not activate triggers. | Activates triggers (if any). |
| Logging | Logs the entire drop operation (removal of schema). | Minimal logging (only the deallocation of data pages). | Fully logged for each row deleted. |
| Foreign Key Constraints | Cannot 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 Scenario | Used 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.
كل أمر من هذه الأوامر له استخداماته المخصصة بناءً على الاحتياج، ويجب أن يتم اختياره بعناية بناءً على نوع العملية المطلوبة.