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

⚡ ملخص ذكي

MySQL تحذف استعلامات DELETE الصفوف غير الضرورية من الجدول، وتعيد عدد الصفوف المتأثرة. يشرح هذا المورد صيغة DELETE، وتصفية WHERE، وحذف عدة صفوف باستخدام IN، والبدائل الأكثر أمانًا TRUNCATE وDROP.

  • 🗑️ البيان الأساسي: يقوم الأمر DELETE FROM `table_name` [WHERE condition] بإزالة الصفوف بأكملها وإرجاع عدد الصفوف المحذوفة.
  • ⚠️ تم حذفه حيث: يؤدي حذف عبارة WHERE إلى حذف كل صف في الجدول، لذا قم دائمًا بالتصفية قبل التنفيذ.
  • 🎯 Targetإزالة ed: WHERE `movie_id` = 18 يزيل سجلًا واحدًا، بينما WHERE `movie_id` IN (20,21) يزيل عدة سجلات في عبارة واحدة.
  • 🔁 إجراء لا رجعة فيه: لا يمكن استعادة البيانات المحذوفة بدون نسخة احتياطية، لذا قم بعمل نسخة احتياطية من قاعدة البيانات قبل تشغيل أمر الحذف.
  • 📊 نطاق مستوى الصف: يؤدي الأمر DELETE إلى إزالة الصفوف بأكملها فقط؛ أما مسح قيمة عمود واحد فيتطلب الأمر UPDATE مع NULL.
  • 🇧🇷 الحذف مقابل الاقتطاع مقابل الإسقاط: يقوم الأمر DELETE بتصفية الصفوف، ويقوم الأمر TRUNCATE بإفراغ الجدول على الفور، ويقوم الأمر DROP بإزالة بنية الجدول نفسها.

ما هو استعلام الحذف؟

استخدم MySQL حذف تُستخدم عبارة DELETE لحذف الصفوف غير الضرورية من جدول قاعدة البيانات. فهي تحذف الصف بأكمله من الجدول، ثم تُعيد عدد الصفوف المحذوفة. تُعدّ عبارة DELETE مفيدةً عند الحاجة إلى مسح البيانات المؤقتة أو القديمة من قاعدة البيانات.

استعلام الحذف في MySQL يمكن حذف أكثر من صف واحد من جدول في عملية تنفيذ واحدة. وهذا مفيد عند حذف عدد كبير من الصفوف من جدول قاعدة البيانات.

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

كيفية حذف صف في MySQL

بعد أن أصبح الغرض من البيان واضحًا، تأتي الخطوة التالية وهي صياغة الجملة. لحذف صف في MySQL، يتم استخدام عبارة DELETE FROM:

DELETE FROM `table_name` [WHERE condition];

هنا:

  • حذف من `table_name` يحكي MySQL الخادم لإزالة الصفوف من الجدول المسمى.
  • [أين الشرط] هذا الخيار اختياري ويستخدم لتطبيق عامل تصفية يقيد عدد الصفوف المتأثرة باستعلام الحذف.

إذا كان حيث الشرطية لا يستخدم في MySQL استعلام الحذف، ثم الكل سيتم حذف الصفوف في جدول معين.

⚠️ تحذير: قم بتشغيل عامل التصفية كاستعلام SELECT أولاً. إذا أعاد بالضبط الصفوف التي تنوي حذفها، فإن استعلام DELETE المطابق يكون آمناً. تجد الصيغة الكاملة موثقة في MySQL دليل حذف البيان.

مثال MySQL حذف الاستعلام

يقوم القسم التالي بإنشاء مجموعة بيانات صغيرة ثم يقوم بحذف البيانات منها.

الخطوة 1: إدخال بيانات نموذجية

قبل أن نخوض في مناقشة أكثر تفصيلاً حول عبارة SQL DELETE، دعونا ندرج بعض البيانات النموذجية في جدول الأفلام للعمل عليها.

INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('The Great Dictator', 'Charlie Chaplin', 1940, 7);
INSERT INTO `movies` (`title`, `director`, `category_id`) VALUES ('sample movie', 'Anonymous', 8);
INSERT INTO `movies` (`title`, `director`, `year_released`, `category_id`) VALUES ('movie 3', 'John Brown', 1920, 8);

يؤدي تنفيذ البرنامج النصي أعلاه إلى إضافة ثلاثة (3) أفلام إلى جدول الأفلام. قبل المتابعة، دعونا نستعرض جميع الأفلام الموجودة في جدولنا.

SELECT * FROM `movies`;

يؤدي تنفيذ البرنامج النصي أعلاه إلى النتائج التالية. تم تمييز الصفوف الثلاثة المُضافة حديثًا.

movie_id الاسم مدير year_released معرف الفئة
1 قراصنة الكاريبي 4 روب مارشال 2011 1
2 نسيان سارة مارشال نيكولاس ستولر 2008 2
3 X رجال اغية 2008 اغية
4 Code الاسم: بلاك إدغار جيمز 2010 اغية
5 بنات أبي الصغيرات اغية 2007 8
6 الملائكة والشياطين اغية 2007 6
7 دافينشي Code اغية 2007 6
9 Honey moonالمتطلبات البيئية جون شولتز 2005 8
16 67% مذنب اغية 2012 اغية
18 الديكتاتور العظيم تشارلي شابلن 1940 7
19 فيلم تجريبي مجهول اغية 8
20 فيلم 3 جون براون 1920 8

الخطوة الثانية: حذف صف واحد

لنفترض أن مكتبة فيديوهات Myflix لم تعد ترغب في تأجير فيلم "الديكتاتور العظيم" وتريد حذفه من قاعدة البيانات. رقم تعريف الفيلم هو 18، لذا يقوم البرنامج النصي أدناه بحذف هذا السطر.

DELETE FROM `movies` WHERE `movie_id` = 18;

تنفيذ البرنامج النصي أعلاه في MySQL منضدة يقوم هذا الأمر بحذف الفيلم ذي المعرف 18 من الجدول الموجود في قاعدة بيانات Myflix.

لنلقِ نظرة الآن على الحالة الحالية لجدول الأفلام.

SELECT * FROM `movies`;
movie_id الاسم مدير year_released معرف الفئة
1 قراصنة الكاريبي 4 روب مارشال 2011 1
2 نسيان سارة مارشال نيكولاس ستولر 2008 2
3 X رجال اغية 2008 اغية
4 Code الاسم: بلاك إدغار جيمز 2010 اغية
5 بنات أبي الصغيرات اغية 2007 8
6 الملائكة والشياطين اغية 2007 6
7 دافينشي Code اغية 2007 6
9 Honey moonالمتطلبات البيئية جون شولتز 2005 8
16 67% مذنب اغية 2012 اغية
19 فيلم تجريبي مجهول اغية 8
20 فيلم 3 جون براون 1920 8

NOTE:

  • لم يعد الفيلم ذو المعرف 18 يظهر في مجموعة نتائج الاستعلام.
  • لا يمكنك حذف عمود واحد من جدول باستخدام أمر DELETE. يزيل هذا الأمر صفًا كاملاً. لمسح حقل واحد، استخدم استعلام التحديث هذا يُعيّن قيمة العمود إلى NULL.

الخطوة 3: حذف صفوف متعددة تحتوي على IN

لنفترض أن لدينا قائمة أفلام نريد حذفها. بدلاً من تنفيذ عبارة واحدة لكل صف، يمكننا دمج عبارة WHERE مع عامل التشغيل IN.

DELETE FROM `movies` WHERE `movie_id` IN (20,21);

يؤدي تنفيذ البرنامج النصي أعلاه إلى حذف الأفلام التي تحمل المعرفات 20 و 21 من جدول الأفلام لدينا في عملية واحدة.

الحذف مقابل الاقتطاع مقابل الإسقاط MySQL

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

الميزات حذف اقتطاع إسقاط
نوع الأمر DML DDL DDL
حيث الشرطية عائلات غير معتمد غير معتمد
ما الذي تمت إزالته؟ الصفوف المحددة جميع الصفوف صفوف وبنية الجدول
العودة ممكن داخل المعاملة غير ممكن (التزام ضمني) غير ممكن (التزام ضمني)
زيادة تلقائية يتم الاحتفاظ بالعداد تتم إعادة ضبط العداد إلى قيمة البداية تتم إزالة المنضدة مع الطاولة
السرعة على الطاولات الكبيرة ببطء (صفًا تلو الآخر) سريع جدا سريع جدا

استخدم أمر الحذف (DELETE) عندما تحتاج إلى فلتر أو القدرة على التراجع. اقتطاع الجدول عند الرغبة في إفراغ جدول بسرعة وإعادة ضبط عداد الترقيم التلقائي (AUTO_INCREMENT)، استخدم الأمر DROP فقط عندما لا يكون الجدول نفسه مطلوبًا، لأنه يزيل تعريفه مع البيانات.

الأسئلة الشائعة

فقط داخل معاملة مفتوحة. شغّل الأمر START TRANSACTION، ثم نفّذ الأمر DELETE، ثم ROLLBACK للتراجع عنه. بعد تنفيذ الأمر COMMIT أو مع تفعيل خاصية الالتزام التلقائي، تُحذف الصفوف نهائيًا ولا يمكن استعادتها إلا من خلال نسخة احتياطية.

استخدم عملية حذف متعددة الجداول مع الانضمامقم بتسمية كلا الجدولين قبل الكلمة المفتاحية FROM. أو بدلاً من ذلك، حدد المفتاح الخارجي باستخدام ON DELETE CASCADE بحيث تتم إزالة الصفوف الفرعية تلقائيًا عند حذف الصف الرئيسي.

يتم تمكين وضع التحديث الآمن بشكل افتراضي في MySQL طاولة العمليرفض هذا الخيار أي طلب حذف لا يستخدم فيه شرط WHERE عمودًا رئيسيًا، مما يمنع حذف الجداول بالكامل عن طريق الخطأ. يمكنك تعطيله من خلال تحرير > تفضيلات > محرر SQL.

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

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

تلخيص هذه التدوينة بـ: