ما الفرق بين الـ DELETE و TRUNCATE و DROP في MySQL؟

تم النشر | بواسطة: Samar Shetiwy | Apr 22, 2026 | منذ يوم و10 ساعات |
برمجه
| عدد المشاهدات: 290
ما الفرق بين الـ DELETE و TRUNCATE و DROP في MySQL؟

مقدمة: "الحذف" في عالم قواعد البيانات ليس مجرد زر واحد!

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

الفرق بين الأوامر الثلاثة (DELETE, TRUNCATE, DROP) هو الفرق بين استخدام الممحاة، وإعادة تهيئة الصفحة، أو تمزيق الورقة بالكامل. الوقوع في الخطأ هنا قد يعني ضياع بيانات لا يمكن استعادتها أو التسبب في بطء شديد للنظام. في هذا المقال، سنفكك شفرة كل أمر لنعرف متى نستخدم السلاح المناسب للمهمة المناسبة.


أولاً: أمر DELETE (الممحاة الدقيقة)

أمر DELETE هو الأمر الأكثر مرونة وتحكماً. هو يعمل على مستوى "الصفوف" (Rows).

  • كيف يعمل؟ يقوم بالبحث عن صفوف محددة بناءً على شرط تضعينه (باستخدام WHERE) ويمسحها. إذا لم تضعي شرطاً، سيمسح كل الصفوف، ولكنه سيفعل ذلك صفاً بصف.

  • هل يمكن التراجع؟ نعم، إذا كنتِ تعملين داخل Transaction، يمكنكِ عمل Rollback واستعادة البيانات.

  • التأثير على الذاكرة: لا يقوم بإعادة ضبط العداد التلقائي (Auto Increment). إذا كان آخر مُعرف هو 10 ومسحتِ الصفوف، الصف القادم سيكون رقمه 11.

  • السرعة: هو الأبطأ لأنه يسجل كل عملية حذف في سجلات النظام (Logs).


ثانياً: أمر TRUNCATE (إعادة ضبط المصنع)

أمر TRUNCATE هو أمر "قاطع". هو يعمل على مستوى "الجدول" ككل ولكن من الداخل فقط.

  • كيف يعمل؟ بدلاً من مسح الصفوف صفاً بصف، يقوم النظام بحذف الجدول داخلياً ثم إعادة إنشائه فارغاً. هذا يجعله أسرع بمراحل ضخمة من DELETE عند التعامل مع ملايين السجلات.

  • هل يمكن التراجع؟ في أغلب المحركات (مثل InnoDB)، لا يمكن التراجع عنه بسهولة بمجرد تنفيذه.

  • التأثير على الذاكرة: يقوم بإعادة ضبط العداد التلقائي (Auto Increment) ليبدأ من 1 مرة أخرى.

  • السرعة: سريع جداً لأنه لا يسجل عمليات الحذف الفردية لكل صف.


ثالثاً: أمر DROP (التدمير الشامل)

أمر DROP هو الأمر الأخطر في SQL. هو لا يمسح البيانات فقط، بل يمسح "كيان" الجدول نفسه.

  • كيف يعمل؟ يقوم بمسح الجدول من قاعدة البيانات تماماً؛ البيانات، الهيكل (Columns)، الفهارس (Indexes)، والصلاحيات المرتبطة به. بعد تنفيذ هذا الأمر، لن تجدي الجدول أصلاً إذا بحثتِ عنه.

  • هل يمكن التراجع؟ مستحيل. البيانات والهيكل يختفيان للأبد.

  • السرعة: لحظي، لأنه ببساطة يخبر نظام الملفات أن هذا الجدول لم يعد موجوداً.


مقارنة تفصيلية: DELETE vs TRUNCATE vs DROP

وجه المقارنة DELETE TRUNCATE DROP
المستوى يمسح صفوفاً (Rows) يمسح محتوى الجدول يمسح الجدول بالكامل
شرط WHERE يدعم (يمكن حذف صف معين) لا يدعم (يمسح الكل) لا يدعم (يدمر الكل)
السرعة بطيء سريع جداً سريع جداً
التراجع (Undo) ممكن غير ممكن غالباً غير ممكن نهائياً
العداد التلقائي لا يعيد ضبطه يعيد ضبطه لـ 1 يختفي مع الجدول
نوع الأمر DML (Data Manipulation) DDL (Data Definition) DDL (Data Definition)

رابعاً: متى تستخدمين كل أمر؟ (خلاصة عملية)

  1. استخدمي DELETE عندما تريدين حذف "بيانات معينة" (مثلاً: حذف مستخدم انتهى اشتراكه) مع الحفاظ على باقي البيانات.

  2. استخدمي TRUNCATE عندما تريدين "تصفير" الجدول بالكامل (مثلاً: تنظيف جدول التجارب أو الـ Logs) لتبدأي من جديد مع الحفاظ على تصميم الجدول.

  3. استخدمي DROP فقط عندما تقررين أن هذا الجدول لم يعد له أي دور في مشروعكِ وتريدين التخلص منه ومن تصميمه نهائياً.


الخلاصة

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

والسؤال لكِ الآن:

❌ هل سبق واستخدمتِ DELETE لمسح ملايين السجلات واستغربتِ من بطء السيرفر؟ 👉 أم أنكِ تعلمتِ الآن متى يكون TRUNCATE هو المنقذ الحقيقي؟


الأسئلة الشائعة (FAQ)

  • س1: هل أمر DELETE يقلل من حجم ملف قاعدة البيانات على القرص؟

    • ج: لا، في كثير من الأحيان تظل المساحة محجوزة لنظام قاعدة البيانات، بينما TRUNCATE يقوم بتحرير تلك المساحة فوراً.

  • س2: أيهما أفضل لحذف جميع السجلات في جدول به علاقات (Foreign Keys)؟

    • ج: TRUNCATE قد يفشل إذا كان الجدول مرتبطاً بعلاقات، لذا قد تضطرين لاستخدام DELETE بدون شرط أو تعطيل فحص العلاقات مؤقتاً.

  • س3: لماذا يعتبر TRUNCATE أسرع من DELETE؟

    • ج: لأن DELETE يمر على كل صف، يتأكد من شروط الحذف، ويسجل العملية في الـ Log، أما TRUNCATE فيقوم بإسقاط المحتوى دفعة واحدة دون النظر للتفاصيل.

  • س4: هل يمكنني استعادة جدول تم عمل DROP له؟

    • ج: فقط إذا كان لديكِ نسخة احتياطية (Backup) سابقة، وإلا فلا توجد طريقة برمجية داخل SQL لاستعادته.

  • س5: هل يؤثر DELETE على أداء قاعدة البيانات؟

    • ج: نعم، الحذف الكثيف باستخدام DELETE قد يؤدي لتفتت البيانات (Fragmentation)، مما يتطلب عمل Optimize للجدول لاحقاً.


🚀 ابدأ رحلتك مع كرياتيفو
وخد أول خطوة حقيقية نحو مستقبلك في البرمجة
📱 ابعتلنا علي واتساب
💬 ابعتلنا علي فيسبوك

الكلمات المفتاحية

الفرق بين DELETE و TRUNCATE أمر DROP في SQL شرح MySQL بالعربي حذف البيانات في SQL Database Administration تحسين أداء قواعد البيانات تعلم البرمجة كرياتيفو أساسيات الباك إند SQL Tutorial Data Manipulation Data Definition أوامر MySQL البرمجة للمبتدئين هندسة البرمجيات Back-end Development تطوير المواقع تعلم SQL إدارة قواعد البيانات شرح أوامر الحذف.

مقالات مشابهة

البرمجة

ما هو الـ Sessions والـ Cookies ولماذا نحتاجها في المواقع ؟

تعرف على الفرق بين Sessions و Cookies في تطوير الويب، وكيف تستخدم كل منهما لإدارة بيانات المستخدم وبناء أنظمة تسجيل دخول آمنة وفعالة.

17 Apr, 2026
تفاصيل المقال
برمجة

ما الفرق بين المزامنة واللامزامنة (Sync vs Async) وأين يقف PHP منهما؟

تعرف على الفرق بين المزامنة واللامزامنة (Sync vs Async) في البرمجة، وأين تقف PHP بينهما، مع شرح عملي يساعدك على تحسين أداء تطبيقاتك.

21 Apr, 2026
تفاصيل المقال
برمجه

ما هو الـ ORM وكيف يُغني عن كتابة SQL مباشرة؟

مفهوم الـ ORM وكيف يحول طريقة تعاملك مع قواعد البيانات. تعلم كيف تكتب كوداً أنظف وأكثر أماناً دون الحاجة لكتابة SQL مباشرة، وتعرف على أشهر المكتبات مثل Prisma وSequelize.

22 Apr, 2026
تفاصيل المقال
برمجة

كيف تتعامل PHP مع ملفات الـ Logs وأخطاء السيرفر؟

تعرف على كيفية تعامل PHP مع ملفات الـ Logs وأخطاء السيرفر، وأهمية تسجيل الأخطاء في تتبع المشكلات وتحسين أداء وأمان تطبيقك.

20 Apr, 2026
تفاصيل المقال
برمجة

كيف يعمل الـ Memory Management في Python؟ دليل شامل لفهم إدارة الذاكرة في بايثون

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

17 Apr, 2026
تفاصيل المقال
برمجة

ما هو الـ Middleware ولماذا أصبح أساس تطبيقات الويب الحديثة؟

تعرف على ما هو الـ Middleware في تطبيقات الويب ولماذا أصبح عنصرًا أساسيًا في تطوير الأنظمة الحديثة وتحسين الأداء والأمان.

21 Apr, 2026
تفاصيل المقال