DELETE
حذف صفوف من جدول DELETE
DELETE يحذف الصفوف المطابقة لشرط WHERE من جدول — بلا WHERE يحذف كل صفوف الجدول مع إبقاء بنيته كما هي.
DELETE يزيل صفوفًا كاملة من جدول حسب شرط WHERE، ويختلف عن TRUNCATE (الذي يفرّغ الجدول كاملًا بسرعة أكبر ودون إمكانية استخدام WHERE) وعن DROP TABLE (الذي يحذف الجدول وبنيته نهائيًا).
يمكن دمج DELETE مع استعلام فرعي في WHERE لحذف صفوف بناءً على شرط في جدول آخر، وبعض قواعد البيانات (مثل PostgreSQL) تدعم RETURNING لإرجاع الصفوف المحذوفة مباشرة بعد الحذف.
الصياغة
DELETE FROM table WHERE condition;
📄 مثال
DELETE FROM orders WHERE status = 'cancelled' AND created_at < '2024-01-01';
أهم النقاط
| النقطة | الوظيفة |
|---|---|
| DELETE بدون WHERE | يحذف كل صفوف الجدول، لكن الجدول نفسه يبقى موجودًا ببنيته |
| DELETE مع استعلام فرعي | حذف صفوف بناءً على شرط في جدول آخر |
| RETURNING | (PostgreSQL) يُرجع الصفوف المحذوفة مباشرة بعد تنفيذ الحذف |
💡 نصائح عملية
- اختبر شرط الحذف بـ SELECT أولًا قبل تحويله إلى DELETE — خطوة بسيطة تمنع أخطاء لا رجعة فيها
- لحذف كل صفوف جدول كبير بسرعة بلا شرط، TRUNCATE عادة أسرع من DELETE بلا WHERE
⚠️ أخطاء شائعة
- نسيان WHERE فيُحذف الجدول بالكامل بأمر واحد
- الخلط بين DELETE (يحذف صفوفًا) وDROP TABLE (يحذف الجدول وبنيته نهائيًا)
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار SQL الكامل بالعربي.