تحديث (SQL)

تُغيّر عبارة SQL UPDATE بيانات سجل واحد أو أكثر في جدول . يمكن تحديث جميع الصفوف، أو اختيار مجموعة فرعية منها باستخدام شرط . في حال عدم استخدام شرط، يتم تحديث كل صف من الصفوف التي تحتوي على القيمة . [ 1 ] : 426WHERE

يأتي البيان UPDATEبالشكل التالي: [ 2 ] [ 1 ] : 426

UPDATEtable_name SET column_name = value [, column_name = value ...] [WHERE condition]

لكي UPDATEتنجح العملية، يجب أن يتمتع المستخدم بصلاحيات معالجة البيانات ( UPDATEامتياز) على الجدول أو العمود ، ويجب ألا تتعارض القيمة المحدثة مع جميع القيود المطبقة (مثل المفاتيح الأساسية والفهارس الفريدة CHECKوالقيود والقيود NOT NULL).

في بعض قواعد البيانات، مثل PostgreSQL ، عند استخدام عبارة FROM ، يتم ربط الجدول الهدف بالجداول المذكورة في قائمة FROM، ويمثل كل صف ناتج من عملية الربط عملية تحديث للجدول الهدف. عند استخدام FROM، يجب التأكد من أن عملية الربط تُنتج صفًا واحدًا على الأكثر لكل صف يتم تعديله. بعبارة أخرى، لا ينبغي ربط صف من الجدول الهدف بأكثر من صف واحد من الجداول الأخرى. إذا حدث ذلك، فسيتم استخدام صف واحد فقط من صفوف الربط لتحديث صف الجدول الهدف، ولكن لا يمكن التنبؤ بسهولة أي صف سيتم استخدامه. [ 3 ]

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

لا يتوافق MySQL مع معيار ANSI.

أمثلة

قم بتعيين قيمة العمود C1 في الجدول T إلى 1، فقط في تلك الصفوف التي تكون فيها قيمة العمود C2 هي "a".

تحديث الجدول T بتعيين C1 = 1 حيث C2 = 'a'

في الجدول T ، قم بتعيين قيمة العمود C1 إلى 9 وقيمة C3 إلى 4 لجميع الصفوف التي تكون قيمة العمود C2 فيها "a".

تحديث الجدول T، تعيين C1 = 9 ، C3 = 4 ، حيث C2 = 'a'

قم بزيادة قيمة العمود C1 بمقدار 1 إذا كانت القيمة في العمود C2 هي "a".

تحديث الجدول T بتعيين C1 = C1 + 1 حيث C2 = 'a'

أضف السلسلة "text" إلى بداية القيمة في العمود C1 إذا كانت القيمة في العمود C2 هي "a".

تحديث الجدول T بتعيين C1 = 'text' || C1 حيث C2 = 'a'

قم بتعيين قيمة العمود C1 في الجدول T1 إلى 2، فقط إذا تم العثور على قيمة العمود C2 في القائمة الفرعية للقيم في العمود C3 في الجدول T2 والتي يكون فيها العمود C4 مساوياً لـ 0.

تحديث الجدول T1، تعيين C1 = 2 حيث C2 موجود في ( تحديد C3 من الجدول T2 حيث C4 = 0 )

يمكن أيضًا تحديث عدة أعمدة في عبارة تحديث واحدة:

تحديث تعيين C1 = 1 ، C2 = 2

كما أن الشروط المعقدة وعمليات الربط ممكنة أيضاً:

تحديث الجدول T، تعيين A = 1 حيث C1 = 1 و C2 = 2

تسمح بعض قواعد البيانات بالاستخدام غير القياسي لعبارة FROM:

تحديث جدول المقالات a بتعيين قيمة العمود المُحدَّث a إلى قيمة التحديث، وذلك من خلال ربط جدول التصنيف c بجدول المقالات a مع جدول التصنيف c بناءً على تطابق معرف المقالة a مع معرف المقالة c ، حيث يكون معرف الفئة c مساويًا لـ 1.

أو على أنظمة أوراكل (بافتراض وجود فهرس على classification.articleID):

تحديث ( تحديد * من المقالات ، الانضمام إلى التصنيف على أساس المقالات.معرف المقالة = التصنيف.معرف المقالة حيث التصنيف.معرف الفئة = 1 ) تعيين [ عمود_محدث ] = قيمة_التحديث

مع اسم الجدول الطويل:

تحديث جدول MyMainTable باسم a ، وتعيين قيمة LName إلى Smith ، حيث تكون قيمة PeopleID هي 1235 .

المشاكل المحتملة

مراجع

  1. 1 2 جون داكيت؛ إيمي ستون؛ كريس أولمان (2022). PHP وMySQL: تطوير مواقع الويب من جانب الخادم . هوبوكين، نيو جيرسي : جون وايلي وأولاده، المحدودة. ISBN 978-1-119-14921-7LCCN 2021951353. مؤرشف من الأصل بتاريخ 30 أبريل 2025. تم الاطلاع عليه بتاريخ 28 أبريل 2026 . 
  2. "بيان التحديث 15.2.17" . أوراكل . تم الاطلاع عليه في 28 مارس 2026 .
  3. "تحديث" . PostgreSQL. يناير 2012.