استعلام UPDATE في MySQL هو عبارة DML تستخدم لتعديل بيانات الجدول. يجب أن يتطلب استعلام UPDATE جملة SET وWHERE. يتم استخدام جملة SET لتغيير قيم العمود المحدد في جملة WHERE.
يتم استخدام جملة JOIN في MySQL في العبارة لاسترداد البيانات عن طريق ضم جداول متعددة داخل استعلام واحد.
UPDATE JOIN عبارة عن عبارة MySQL تستخدم لإجراء تحديثات عبر الجداول مما يعني أنه يمكننا تحديث جدول واحد باستخدام جدول آخر بشرط جملة JOIN . يقوم هذا الاستعلام بتحديث وتعديل البيانات حيث يتم ضم أكثر من جدول بناءً على ذلك أساسي مفتاح و أجنبي المفتاح وشرط الانضمام المحدد. يمكننا تحديث أعمدة فردية أو متعددة في وقت واحد باستخدام تحديث الاستعلام .
ملاحظة: بيان MySQL UPDATE JOIN مدعوم من الإصدار 4.0 أو أعلى.
بناء الجملة
فيما يلي بناء الجملة الأساسي لعبارة UPDATE JOIN لتعديل السجل في جدول MySQL:
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
في بناء جملة MySQL UPDATE JOIN أعلاه:
أولاً، قمنا بتحديد الجدولين: الجدول الرئيسي (Tab1) وجدول آخر (tab2) بعد جملة UPDATE. بعد جملة UPDATE، يجب تحديد جدول واحد على الأقل. بعد ذلك، قمنا بتحديد أنواع بنود الانضمام ، أي إما INNER JOIN أو الانضمام الأيسر ، والتي تظهر مباشرة بعد جملة UPDATE ثم يتم تحديد مسند الصلة بعد الكلمة الأساسية ON. ثم يتعين علينا تعيين القيم الجديدة للأعمدة الموجودة في علامة التبويب 1 و/أو علامة التبويب 2 لتعديلها في الجدول. وأخيرًا، يتم استخدام شرط جملة WHERE لتحديد الصفوف للتحديث.
كيف يعمل UPDATE JOIN في MySQL؟
عملية عمل UPDATE JOIN في ماي إس كيو إل هو نفسه كما هو موضح في بناء الجملة أعلاه. لكن في بعض الأحيان، نجد أن هذا الاستعلام وحده أجرى تحديث الجداول المشتركة دون تضمين أي صلات. يعد بناء الجملة التالي طريقة أخرى لتحديث جدول واحد باستخدام جدول آخر :
ما هو الخروج svn
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
عبارة UPDATE أعلاه تنتج نفس النتيجة مثل UPDATE JOIN مع عبارات INNER JOIN أو LEFT JOIN. هذا يعني أنه يمكننا إعادة كتابة بناء الجملة أعلاه كبناء جملة UPDATE JOIN المعروض أعلاه:
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
دعونا نأخذ بعض الأمثلة لفهم كيفية عمل عبارة UPDATE JOIN في جدول MySQL.
تحديث أمثلة الانضمام
أولاً، سنقوم بإنشاء جدولين بأسمائهما أداء و موظف ويرتبط كلا الجدولين من خلال مفتاح خارجي. هنا، 'الأداء' هو جدول الوالدين ، و'الموظفون' هو طفل طاولة . تقوم البرامج النصية التالية بإنشاء كلا الجدولين مع سجلاتهما.
الجدول: الأداء
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
بعد ذلك، املأ السجلات في الجدول باستخدام عبارة INSERT.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
ثم قم بتنفيذ استعلام SELECT للتحقق من البيانات كما هو موضح في الصورة أدناه:
الجدول: الموظفون
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
بعد ذلك، املأ السجلات في الجدول باستخدام عبارة INSERT.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
ثم قم بتنفيذ استعلام SELECT للتحقق من البيانات كما هو موضح في الصورة أدناه:
تحديث الانضمام باستخدام مثال INNER JOIN
لنفترض أننا نريد تحديث ملف راتب الموظف على أساس أدائه . يمكننا تحديث راتب الموظف في جدول الموظفين باستخدام بيان UPDATE INNER JOIN لأن الأداء نسبة مئوية يتم تخزينها في جدول الأداء.
في الجداول أعلاه، علينا استخدام أداء الحقل للانضمام إلى جدول الموظفين والأداء. انظر الاستعلام أدناه:
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
بعد تنفيذ البيان أعلاه، سنحصل على النتيجة أدناه، حيث يمكننا أن نرى أنه تم تحديث عمود راتب الموظف بنجاح.
دعونا نفهم كيف يعمل هذا الاستعلام في MySQL. في الاستعلام، قمنا بتحديد جدول الموظفين فقط بعد عبارة UPDATE. وذلك لأننا نريد تغيير السجل في جدول الموظفين فقط، وليس في كلا الجدولين.
يتحقق الاستعلام من قيم عمود الأداء لكل صف في جدول 'الموظفين' مقابل عمود الأداء في جدول 'الأداء'. إذا كان سيحصل على عمود الأداء المطابق، فإنه يأخذ النسبة المئوية في جدول الأداء ويقوم بتحديث عمود الرواتب في جدول الموظفين. يقوم هذا الاستعلام بتحديث كافة السجلات في جدول الموظفين لأننا لم نحدد جملة WHERE في استعلام UPDATE JOIN.
تحديث الانضمام باستخدام مثال الانضمام الأيسر
لفهم UPDATE JOIN باستخدام LEFT JOIN، نحتاج أولاً إلى إدراج صفين جديدين في جدول الموظفين:
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
وبما أن هؤلاء الموظفين هم موظفون جدد، فإن سجل أدائهم غير متوفر. انظر الإخراج أدناه:
إذا أردنا تحديث الراتب للموظفين المعينين حديثا ، لا يمكننا استخدام استعلام UPDATE INNER JOIN. ويرجع ذلك إلى عدم توفر بيانات أدائهم في جدول الأداء. وبالتالي، سوف نستخدم عبارة UPDATE LEFT JOIN لتلبية هذه الحاجة.
يتم استخدام عبارة UPDATE LEFT JOIN في MySQL لتحديث صف في جدول عندما لا توجد سجلات موجودة في الصف المقابل لجدول آخر.
على سبيل المثال إذا أردنا زيادة راتب الموظف المعين حديثاً بنسبة 2.5% فيمكننا ذلك بالاستعانة بالعبارة التالية:
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
بعد تنفيذ الاستعلام أعلاه، سنحصل على الإخراج كما هو موضح في الصورة أدناه حيث يمكننا أن نرى أنه تم تحديث راتب الموظفين المعينين حديثًا بنجاح.
في هذه المقالة، تعلمنا عبارة MySQL Update Join التي تسمح لنا بتغيير البيانات الموجودة في جدول واحد بالبيانات الجديدة من جدول آخر بشرط جملة JOIN. يعد هذا الاستعلام مفيدًا عندما نحتاج إلى تعديل أعمدة معينة محددة في جملة WHERE مع استخدام عبارات INNER JOIN أو LEFT JOIN.