تقييم الدرس 22: التفكير بالمجموعات بدل الحلقات. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) أي أسلوب أسرع لتحديث 100 ألف صف بقاعدة واحدة؟
2) ما المكافئ بأمر واحد لهذه الحلقة؟
query.sql
DO $$ DECLARE r record; BEGINFOR r INSELECT id FROM customers WHERE city = 'مكة'LOOPUPDATE customers SET city = 'جدة'WHERE id = r.id;ENDLOOP;END $$;
3) لإدخال الطلبات الملغاة في جدول أرشيف دفعة واحدة:
4) متى تبقى الحلقة مناسبة؟
5) في Oracle المعالجة الجماعية في الكود الإجرائي بـ:
2السؤال الثاني: صح أم خطأ
1) UPDATE … FROM يحدّث جدولًا من نتيجة استعلام آخر.
الصواب: صح
2) CASE لا يُستخدم داخل UPDATE.
الصواب: خطأ
3) غياب الفهرس يزيد بطء الحلقة صفًّا بصف.
الصواب: صح
4) الحلقة دائمًا أوضح من أمر SQL واحد.
الصواب: خطأ
5) العملاء بلا طلبات يضيعون في JOIN العادي؛ LEFT JOIN يحفظهم.
الصواب: صح
3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة
1) لإدخال نتيجة استعلام نكتب INSERT INTO t … ;
الإجابة: SELECT
2) لاختيار قيمة حسب شرط داخل الأمر نستخدم .
الإجابة: CASE
3) للتحديث من استعلام في PostgreSQL: UPDATE t SET … (SELECT …) s WHERE …
الإجابة: FROM
4السؤال الرابع: أسئلة عملية
1) ما ناتج هذا الكود؟
query.sql
UPDATE products SET stock = stock + CASEWHEN category_id = 1THEN10ELSE0END;SELECTsum(stock) FROM products WHERE category_id = 1;
الناتج الصحيح:
النتيجة · صف واحد
sum
53
2) كم صفًّا في الأرشيف؟
query.sql
CREATETABLE archive ASSELECT * FROM orders WHEREfalse;INSERTINTO archive SELECT * FROM orders WHERE status IN ('new', 'cancelled');SELECTcount(*) FROM archive;