UPDATE مع FROM وتحديثات بأسلوب JOIN
حدّث الصفوف باستخدام قيم من جدول آخر عبر UPDATE ... FROM في PostgreSQL، وعبارة MERGE القياسية.
UPDATE مع FROM وتحديثات بأسلوب JOIN درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
UPDATE أساسي
غيّر القيم في الصفوف المطابقة:
UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;أعمدة متعددة
قائمة SET مفصولة بفواصل:
UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;تحديث صفوف كثيرة
طابِق مزيدًا من الصفوف باستخدام WHERE:
UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';UPDATE مع استعلام فرعي
احسب القيمة الجديدة من استعلام آخر:
UPDATE products
SET review_count = (
SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);UPDATE … FROM (في PostgreSQL)
تحديث بأسلوب JOIN، إذ يجلب القيم من جدول آخر:
UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;UPDATE … FROM مع جداول متعددة
يمكن أن تتضمن قائمة FROM عدة جداول:
UPDATE invoices inv
SET tax_rate = r.rate
FROM users u
JOIN rates r ON r.country = u.country
WHERE inv.user_id = u.id;SQL القياسي: UPDATE … FROM عبر استعلام فرعي مترابط
البديل القابل للنقل بين الأنظمة (لكنه أبطأ):
UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);MERGE لتنفيذ INSERT/UPDATE/DELETE
تدعم PostgreSQL 15 فأحدث الأمر MERGE لتنفيذ عمليات مدمجة، راجع درس UPSERT.
استخدام RETURNING مع UPDATE
استرجع الصفوف المحدّثة في جولة واحدة ذهابًا وإيابًا:
UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;التحديث باستخدام CASE
قيم جديدة مشروطة:
UPDATE orders
SET status = CASE
WHEN paid_at IS NOT NULL THEN 'paid'
WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
ELSE status
END;انتبه إلى حذف WHERE
تحدّث UPDATE users SET active = false; كل صف. في بيئة الإنتاج:
- نفّذ SELECT أولًا للتحقق من عدد الصفوف
- غلّف العملية داخل معاملة وتحقق قبل تنفيذ COMMIT
- استخدم
BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK;كتشغيل تجريبي
أداء UPDATE
ينشئ UPDATE إصدارًا جديدًا من الصف ويضع علامة على الإصدار القديم باعتباره ميتًا (MVCC). وقد تتضخم الجداول التي تتعرض لتحديثات متكررة، وسنتناول ذلك في درس VACUUM/MVCC.
مراجعة
يُعد UPDATE … FROM تحديثًا بأسلوب JOIN، ما يجعل الإصلاحات المجمعة واضحة ونظيفة.
- استخدم WHERE دائمًا، ولا تنسه أبدًا
- استخدم RETURNING للتحقق
- اختبر داخل معاملة باستخدام ROLLBACK
اختبار سريع
ما صيغة UPDATE التي تتيح لك الرجوع إلى جدول آخر في PostgreSQL؟
الأسئلة الشائعة
هل درس «UPDATE مع FROM وتحديثات بأسلوب JOIN» مجاني؟
نعم — نص درس «UPDATE مع FROM وتحديثات بأسلوب JOIN» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «UPDATE مع FROM وتحديثات بأسلوب JOIN»؟
حدّث الصفوف باستخدام قيم من جدول آخر عبر UPDATE ... FROM في PostgreSQL، وعبارة MERGE القياسية. تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «UPDATE مع FROM وتحديثات بأسلوب JOIN»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- INSERT مع صفوف متعددة
- UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE مع FROM وتحديثات بأسلوب JOIN
- DELETE مع USING وأنماط آمنة