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.
كل أمر من هذه الأوامر له استخداماته المخصصة بناءً على الاحتياج، ويجب أن يتم اختياره بعناية بناءً على نوع العملية المطلوبة.