يُستخدم أمر UPDATE في SQL لتعديل بيانات صفوف موجودة في جدول. وهو من أوامر معالجة البيانات (DML)، ويتكوّن من ثلاثة أجزاء: اسم الجدول، وجملة SET التي تحدد الأعمدة وقيمها الجديدة، وجملة WHERE التي تحدد أي الصفوف ستُعدَّل. وكما في DELETE، فإن نسيان WHERE يعدّل كل صفوف الجدول دفعةً واحدة.
التعديل بشرط
لتعديل صف محدد نستخدم WHERE لتحديده بدقة:
UPDATE users
SET email = 'new@example.com'
WHERE id = 5;
تعديل عدة أعمدة معاً
يمكن تحديث أكثر من عمود في أمر واحد بفصلها بفاصلة داخل جملة SET:
UPDATE products
SET price = 450, availability = 'متاح'
WHERE id = 12;
التعديل بالاعتماد على القيمة الحالية
يمكن أن تعتمد القيمة الجديدة على القيمة الحالية للعمود، كزيادة كل الأسعار بنسبة 10%:
UPDATE products
SET price = price * 1.10
WHERE category = 'إلكترونيات';
تحذير: التعديل بلا شرط
إذا نُفِّذ UPDATE دون WHERE، تتأثر جميع صفوف الجدول. لذا يُنصح بمعاينة الصفوف بـ SELECT بالشرط نفسه قبل التنفيذ.
-- خطير: يعدّل كل الصفوف
UPDATE users SET status = 'نشط';
أخطاء شائعة
- نسيان جملة WHERE فتتغيّر كل صفوف الجدول دون قصد.
- استخدام علامة المساواة المزدوجة == بدلاً من = داخل SET أو WHERE.
- تعديل عمود مرتبط بقيود دون مراعاتها، ما يسبب رفض العملية.
تمرين محلول
المطلوب: امنح خصماً 15% على كل المنتجات في تصنيف “ملابس” التي يزيد سعرها على 200.
UPDATE products
SET price = price * 0.85
WHERE category = 'ملابس' AND price > 200;
اعتمدنا على القيمة الحالية للسعر في حساب السعر بعد الخصم، وحصرنا التعديل بشرطين دقيقين لتجنّب تعديل صفوف أخرى.
الخلاصة
أمر UPDATE يعدّل بيانات الصفوف عبر جملة SET، ويعتمد أمانه كلياً على دقة جملة WHERE. واعتياد معاينة الصفوف قبل التعديل، والقدرة على بناء قيم تعتمد على القيمة الحالية، يجعلان تحديث البيانات عملية آمنة وفعّالة.
