كيفية حذف صف في SQL: شرح أمر DELETE مع أمثلة عملية
كيفية حذف صف في SQL باستخدام DELETE
يُعد أمر DELETE في SQL من الأوامر الأساسية لإزالة البيانات من الجداول. ويُستخدم عادةً مع الشرط WHERE لتحديد الصف أو الصفوف المطلوب حذفها بدقة. يساعدك هذا الأسلوب على التحكم الكامل في البيانات، ويمنع حذف السجلات غير المقصودة.
في هذا الدليل، ستتعرف إلى طريقة حذف صف واحد، وحذف عدة صفوف دفعة واحدة، بالإضافة إلى حذف نطاق من السجلات أو حذف جميع البيانات من جدول كامل.

الصيغة الأساسية لأمر DELETE في SQL
هذه هي البنية العامة لاستخدام أمر DELETE:
DELETE FROM table_name
WHERE condition of which row(s) to delete;
يعتمد هذا الأمر على عنصرين رئيسيين:
DELETE FROM: لتحديد الجدول الذي تريد الحذف منه.WHERE: لتحديد السجلات المستهدفة بالحذف.
ومن المهم جداً عدم تجاهل شرط WHERE إلا إذا كنت تنوي حذف جميع السجلات داخل الجدول.
مثال عملي على حذف صف واحد من جدول
لنفترض أن لدينا جدولاً باسم cats يحتوي على 10 صفوف، ويتضمن الأعمدة التالية: id وname وgender.

إذا أردنا حذف الصف الذي يحمل المعرّف id = 8، وهو الصف الخاص بالاسم Loki، فسنحدد ذلك باستخدام WHERE.

الخطوة الأولى: تحديد الجدول
DELETE FROM cats
الخطوة الثانية: إضافة شرط الحذف
WHERE id = 8;
الاستعلام الكامل لحذف صف واحد
DELETE FROM cats
WHERE id = 8;
بعد تنفيذ الاستعلام، سيُحذف الصف الخاص بـ Loki من الجدول.


كيفية حذف عدة صفوف في SQL دفعة واحدة
لا يقتصر أمر DELETE على حذف صف واحد فقط، بل يمكن استخدامه لحذف عدة صفوف بناءً على شرط معين. على سبيل المثال، يمكن تعديل الشرط ليعتمد على العمود gender بدلاً من id.
إذا أردنا حذف جميع الصفوف التي تمثل القطط الذكور، فسنستخدم الشرط gender = "M".
DELETE FROM cats
WHERE gender = "M";
بعد تنفيذ هذا الاستعلام، سيبقى في الجدول فقط الصفوف الخاصة بالقطط الإناث.

حذف مجموعة من الصفوف باستخدام BETWEEN وAND
في بعض الحالات، قد تحتاج إلى حذف مجموعة متتالية من السجلات ضمن نطاق محدد. هنا يمكن استخدام العامل BETWEEN مع AND لتحديد المجال المطلوب.
إذا أردنا حذف الصفوف التي تتراوح قيم id فيها من 4 إلى 7 بشكل شامل، فسيكون الاستعلام كالتالي:
DELETE FROM cats
WHERE id BETWEEN 4 AND 7;
هذا يعني أن الصفوف التي تحمل المعرفات 4 و5 و6 و7 سيتم حذفها دفعة واحدة.

وبذلك ستبقى فقط السجلات ذات المعرّفات 1 إلى 3 و8 إلى 10.
حذف عدة صفوف باستخدام IN في SQL
يُستخدم العامل IN عندما ترغب في حذف صفوف محددة بناءً على مجموعة قيم معروفة مسبقاً. هذه الطريقة مفيدة جداً عند استهداف أسماء أو معرّفات غير متتالية.
لنفترض أننا نريد حذف الصفوف التي تحمل الأسماء التالية: Lucy وStella وMax وTiger.

DELETE FROM cats
WHERE name IN ("Lucy", "Stella", "Max", "Tiger");
بعد تنفيذ هذا الأمر، ستختفي هذه الأسماء من الجدول.

كيفية حذف جميع السجلات من جدول في SQL
إذا كنت تريد إفراغ الجدول بالكامل من جميع البيانات المخزنة فيه، فيمكنك استخدام أمر DELETE بدون شرط WHERE.
DELETE FROM table_name;
ولتطبيق ذلك على جدول cats، سيكون الاستعلام كما يلي:
DELETE FROM cats;
ينبغي الانتباه إلى أن هذا الاستعلام سيحذف كل الصفوف من الجدول، لذلك يجب استخدامه بحذر شديد، خصوصاً في بيئات الإنتاج.
متى تستخدم DELETE في SQL؟
يكون أمر DELETE مناسباً في عدد من السيناريوهات العملية، مثل:
- حذف سجل خاطئ أُضيف إلى قاعدة البيانات.
- تنظيف البيانات غير المطلوبة أو المكررة.
- حذف مجموعة سجلات وفق شرط منطقي محدد.
- إفراغ جدول قبل إعادة استيراد بيانات جديدة.
أفضل الممارسات قبل حذف البيانات
قبل تنفيذ أي استعلام DELETE، من الأفضل الالتزام ببعض الممارسات الاحترافية لتقليل المخاطر:
- نفّذ استعلام
SELECTبنفس شرطWHEREللتأكد من الصفوف المستهدفة. - احرص على وجود نسخة احتياطية إذا كانت البيانات مهمة.
- استخدم المعرفات الفريدة مثل
idمتى أمكن لتقليل احتمالات الحذف الخاطئ. - اختبر الاستعلام أولاً في بيئة تجريبية قبل تشغيله على قاعدة بيانات حقيقية.
ملخص أهم صيغ الحذف في SQL
| الحالة | الصيغة |
|---|---|
| حذف صف واحد | DELETE FROM table_name WHERE id = value; |
| حذف عدة صفوف بشرط محدد | DELETE FROM table_name WHERE column = value; |
| حذف نطاق من الصفوف | DELETE FROM table_name WHERE column BETWEEN value1 AND value2; |
| حذف صفوف من قائمة قيم | DELETE FROM table_name WHERE column IN (value1, value2, value3); |
| حذف جميع السجلات | DELETE FROM table_name; |
الخلاصة التقنية
يُعد أمر DELETE في SQL أداة قوية وضرورية لإدارة البيانات داخل الجداول، لكنه يتطلب دقة كبيرة عند الاستخدام. أفضل نهج عملي هو الاعتماد على WHERE بشكل واضح، ومراجعة الصفوف المستهدفة قبل التنفيذ، خاصة عند حذف عدة سجلات أو إفراغ جدول كامل. كلما كان شرط الحذف أكثر تحديداً، كانت إدارة البيانات أكثر أماناً واحترافية.