كيفية حذف صف في SQL: شرح أمر DELETE مع أمثلة عملية

دقائق القراءة: 4

كيفية حذف صف في SQL باستخدام DELETE

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

في هذا الدليل، ستتعرف إلى طريقة حذف صف واحد، وحذف عدة صفوف دفعة واحدة، بالإضافة إلى حذف نطاق من السجلات أو حذف جميع البيانات من جدول كامل.

شرح احترافي لكيفية حذف الصفوف من جدول SQL باستخدام أمر DELETE

الصيغة الأساسية لأمر DELETE في SQL

هذه هي البنية العامة لاستخدام أمر DELETE:

DELETE FROM table_name
WHERE condition of which row(s) to delete;

يعتمد هذا الأمر على عنصرين رئيسيين:

  • DELETE FROM: لتحديد الجدول الذي تريد الحذف منه.
  • WHERE: لتحديد السجلات المستهدفة بالحذف.

ومن المهم جداً عدم تجاهل شرط WHERE إلا إذا كنت تنوي حذف جميع السجلات داخل الجدول.

مثال عملي على حذف صف واحد من جدول

لنفترض أن لدينا جدولاً باسم cats يحتوي على 10 صفوف، ويتضمن الأعمدة التالية: id وname وgender.

جدول cats في SQL يحتوي على معرف واسم ونوع القطط

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

تحديد الصف الذي يحتوي على id يساوي 8 في جدول SQL

الخطوة الأولى: تحديد الجدول

DELETE FROM cats

الخطوة الثانية: إضافة شرط الحذف

WHERE id = 8;

الاستعلام الكامل لحذف صف واحد

DELETE FROM cats
WHERE id = 8;

بعد تنفيذ الاستعلام، سيُحذف الصف الخاص بـ Loki من الجدول.

نتيجة حذف الصف ذي المعرّف 8 من جدول cats في SQLالتحقق من نجاح حذف بيانات Loki من جدول SQL

كيفية حذف عدة صفوف في SQL دفعة واحدة

لا يقتصر أمر DELETE على حذف صف واحد فقط، بل يمكن استخدامه لحذف عدة صفوف بناءً على شرط معين. على سبيل المثال، يمكن تعديل الشرط ليعتمد على العمود gender بدلاً من id.

إذا أردنا حذف جميع الصفوف التي تمثل القطط الذكور، فسنستخدم الشرط gender = "M".

DELETE FROM cats
WHERE gender = "M";

بعد تنفيذ هذا الاستعلام، سيبقى في الجدول فقط الصفوف الخاصة بالقطط الإناث.

نتيجة حذف جميع الصفوف التي تحمل القيمة M من عمود gender في SQL

حذف مجموعة من الصفوف باستخدام BETWEEN وAND

في بعض الحالات، قد تحتاج إلى حذف مجموعة متتالية من السجلات ضمن نطاق محدد. هنا يمكن استخدام العامل BETWEEN مع AND لتحديد المجال المطلوب.

إذا أردنا حذف الصفوف التي تتراوح قيم id فيها من 4 إلى 7 بشكل شامل، فسيكون الاستعلام كالتالي:

DELETE FROM cats
WHERE id BETWEEN 4 AND 7;

هذا يعني أن الصفوف التي تحمل المعرفات 4 و5 و6 و7 سيتم حذفها دفعة واحدة.

نتيجة حذف نطاق من الصفوف باستخدام BETWEEN وAND في SQL

وبذلك ستبقى فقط السجلات ذات المعرّفات 1 إلى 3 و8 إلى 10.

حذف عدة صفوف باستخدام IN في SQL

يُستخدم العامل IN عندما ترغب في حذف صفوف محددة بناءً على مجموعة قيم معروفة مسبقاً. هذه الطريقة مفيدة جداً عند استهداف أسماء أو معرّفات غير متتالية.

لنفترض أننا نريد حذف الصفوف التي تحمل الأسماء التالية: Lucy وStella وMax وTiger.

الجدول الأصلي قبل حذف أسماء محددة باستخدام IN في SQL

DELETE FROM cats
WHERE name IN ("Lucy", "Stella", "Max", "Tiger");

بعد تنفيذ هذا الأمر، ستختفي هذه الأسماء من الجدول.

نتيجة حذف صفوف بأسماء محددة باستخدام العامل IN في SQL

كيفية حذف جميع السجلات من جدول في SQL

إذا كنت تريد إفراغ الجدول بالكامل من جميع البيانات المخزنة فيه، فيمكنك استخدام أمر DELETE بدون شرط WHERE.

DELETE FROM table_name;

ولتطبيق ذلك على جدول cats، سيكون الاستعلام كما يلي:

DELETE FROM cats;

ينبغي الانتباه إلى أن هذا الاستعلام سيحذف كل الصفوف من الجدول، لذلك يجب استخدامه بحذر شديد، خصوصاً في بيئات الإنتاج.

متى تستخدم DELETE في SQL؟

يكون أمر DELETE مناسباً في عدد من السيناريوهات العملية، مثل:

  • حذف سجل خاطئ أُضيف إلى قاعدة البيانات.
  • تنظيف البيانات غير المطلوبة أو المكررة.
  • حذف مجموعة سجلات وفق شرط منطقي محدد.
  • إفراغ جدول قبل إعادة استيراد بيانات جديدة.

أفضل الممارسات قبل حذف البيانات

قبل تنفيذ أي استعلام DELETE، من الأفضل الالتزام ببعض الممارسات الاحترافية لتقليل المخاطر:

  1. نفّذ استعلام SELECT بنفس شرط WHERE للتأكد من الصفوف المستهدفة.
  2. احرص على وجود نسخة احتياطية إذا كانت البيانات مهمة.
  3. استخدم المعرفات الفريدة مثل id متى أمكن لتقليل احتمالات الحذف الخاطئ.
  4. اختبر الاستعلام أولاً في بيئة تجريبية قبل تشغيله على قاعدة بيانات حقيقية.

ملخص أهم صيغ الحذف في 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 بشكل واضح، ومراجعة الصفوف المستهدفة قبل التنفيذ، خاصة عند حذف عدة سجلات أو إفراغ جدول كامل. كلما كان شرط الحذف أكثر تحديداً، كانت إدارة البيانات أكثر أماناً واحترافية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *