يعد استعلام DELETE جزءًا فرعيًا من لغة معالجة البيانات المستخدمة لإزالة الصفوف من الجداول. كيفية حذف الانضمام ماي إس كيو إل هو سؤال شائع جدًا خلال المقابلات. إن استخدام عبارات ربط الحذف في MySQL ليست عملية سهلة. في هذا القسم، سنصف كيف يمكنك حذف السجلات من جداول متعددة باستخدام INNER JOIN أو LEFT JOIN في استعلام DELETE.
حذف الانضمام باستخدام INNER JOIN
يمكن استخدام استعلام الصلة الداخلية مع استعلام الحذف لإزالة الصفوف من جدول واحد والصفوف المطابقة من الجدول الآخر التي تفي بالشرط المحدد.
بناء الجملة
فيما يلي بناء الجملة الذي يمكن استخدامه لحذف الصفوف من أكثر من جدول باستخدام Inner Join.
DELETE target table FROM table1 INNER JOIN table2 ON table1.joining_column= table2.joining_column WHERE condition
الهدف هنا هو اسم جدول نريد حذف الصفوف منه عن طريق مطابقة الشرط المحدد. لنفترض أنك تريد حذف الصفوف من الجدول T1 و T2 أين معرف_الطالب = 2 ، فيمكن كتابتها على النحو التالي:
ما هي الأشهر q3
DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.student_id=T2.student.id WHERE T1.student_id=2;
في بناء الجملة أعلاه، يتم كتابة الجدول الهدف (T1 وT2) بين الكلمات الأساسية DELETE وFROM. إذا حذفنا أي اسم جدول من هناك، فسيصبح حذف البيان يزيل الصفوف من جدول واحد فقط. التعبير المكتوب ب على الكلمة الأساسية هي الشرط الذي يطابق الصفوف الموجودة في الجداول التي ستقوم بحذفها.
مثال
لنفترض أن لدينا جدولين طلاب و جهات الاتصال الذي يحتوي على البيانات التالية:
الجدول: الطلاب
الجدول: جهات الاتصال
قم بتنفيذ الاستعلام التالي لفهم حذف الانضمام مع الانضمام الداخلي. يحذف هذا البيان صفًا له نفس المعرف في كلا الجدولين.
DELETE students, contacts FROM students INNER JOIN contacts ON students.student_id=contacts.college_id WHERE students.student_id = 4;
بعد التنفيذ الناجح ستظهر الرسالة التالية:
الآن، قم بتشغيل الاستعلام التالي للتحقق من حذف الصفوف بنجاح.
mysql> SELECT * FROM students; mysql> SELECT * FROM contacts;
يمكنك أن ترى أن الصفوف التي يوجد بها Student_id=4 يتم حذف.
سلسلة مقارنة جافا
حذف الانضمام مع الانضمام الأيسر
لقد تعلمنا بالفعل عبارة LEFT JOIN مع عبارة SELECT التي تُرجع جميع الصفوف من الجدول الأيسر (الأول) والصفوف المطابقة أو غير المطابقة من جدول آخر. وبالمثل، يمكننا أيضًا استخدام جملة LEFT JOIN مع الكلمة الأساسية DELETE لحذف الصفوف من الجدول الأيسر (الأول) الذي لا يحتوي على صفوف متطابقة من الجدول الأيمن (الثاني).
يشرح الاستعلام التالي ذلك بشكل أكثر وضوحًا حيث تستخدم عبارة DELETE LEFT JOIN لحذف الصفوف منها الجدول 1 الذي لا يحتوي على صفوف متطابقة في الجدول 2 :
DELETE Table1 FROM Table1 LEFT JOIN Table2 ON Table1.key = Table2.key WHERE Table2.key IS NULL;
في الاستعلام أعلاه، لاحظ أننا سنستخدم الجدول 1 فقط مع الكلمة الأساسية DELETE، وليس كلاهما كما فعلنا في عبارة INNER JOIN.
مثال
فلنقم بإنشاء جدول' جهات الاتصال ' و ' عملاء 'في قاعدة بيانات تحتوي على البيانات التالية:
الجدول: جهات الاتصال
جعل البرنامج النصي sh قابلاً للتنفيذ
الجدول: العملاء
قم بتنفيذ العبارة التالية التي تقوم بإزالة العميل الذي ليس لديه الهاتف الخلوي رقم:
DELETE customers FROM customers LEFT JOIN contacts ON customers.customer_id = contacts.contact_id WHERE cellphone IS NULL;
بعد التنفيذ الناجح ستظهر الرسالة التالية:
الآن، قم بتشغيل الاستعلام التالي للتحقق من حذف الصفوف بنجاح.
mysql> SELECT * FROM customers;
يمكنك أن ترى أنه تم حذف الصفوف التي لا يملك فيها العميل رقم الهاتف المحمول.