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

تم النشر | بواسطة: Samar Shetiwy | Apr 22, 2026 | منذ شهر |
برمجه
| عدد المشاهدات: 1,380
ما الفرق بين الـ 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 إدارة قواعد البيانات شرح أوامر الحذف.

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

برمجة

لماذا يُستخدم PHP مع MySQL تحديدًا ؟ — العلاقة بين الاثنين

اكتشف لماذا يُستخدم PHP مع MySQL في تطوير الويب، وكيف يعملان معًا لإنشاء مواقع ديناميكية قوية وسريعة مع أفضل الممارسات.

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

ما هي أنواع البيانات الشائعة في MySQL وكيف تختار النوع المناسب

اختيار نوع البيانات الصحيح هو الخطوة الأولى لتحسين أداء قاعدة بياناتك وتوفير مساحة التخزين. اكتشف الفرق بين أنواع البيانات الشائعة في MySQL ومتى تستخدم كل منها.

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

ما هو MySQL ولماذا هو الأكثر استخداماً مع PHP؟

لماذا يختار المبرمجون دائماً ثنائي MySQL و PHP لبناء مواقعهم؟ اكتشف تاريخ هذا الاندماج القوي، مميزات MySQL التقنية، وكيف أصبح المحرك الأساسي لأشهر منصات الويب في العالم.

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

ما الفرق بين React و Vue.js و Angular

مقال شامل يقارن بين React و Vue.js و Angular من حيث سهولة التعلم، الأداء، المتطلبات قبل التعلم، سوق العمل في مصر والخليج والعالم، والمرتبات، مع توضيح أيهم الأفضل للمبتدئين وللمطورين الباحثين عن فرص عمل في مجال Front-End Development.

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

ما الفرق بين الـ Stored Procedure والـ Function في MySQL؟

الفروق الجوهرية بين الـ Stored Procedure والـ Function في MySQL. تعلم متى تستخدم كل منهما لتحويل منطق عملك إلى قاعدة البيانات بكفاءة واحترافية.

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

ما الفرق بين MySQL و PostgreSQL و SQLite

قواعد البيانات: MySQL و PostgreSQL و SQLite. تعرف على نقاط القوة والضعف لكل منهم وكيف تختار المحرك الأنسب لمشروعك البرمجي القادم.

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