طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 122 · برمجة قواعد البيانات
تقييم الدرس 24

الاستعلامات الفرعية و CTE

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 24: الاستعلامات الفرعية و CTE. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) استعلام فرعي يُعاد تنفيذه لكل صف خارجي يسمّى:
2) ماذا يُرجع هذا الاستعلام؟
query.sql
SELECT name FROM customers WHERE id NOT IN (SELECT NULL::int UNION SELECT 1);
3) في Oracle تقليديًّا تُستعلم الهرميات بـ:
4) WITH moved AS (DELETE … RETURNING *) INSERT … SELECT * FROM moved يفعل:
5) في CTE التكراري، الجزء الأول:

2السؤال الثاني: صح أم خطأ

1) يمكن استخدام CTE واحد أكثر من مرة في الاستعلام نفسه.
الصواب: صح
2) NOT IN آمن دائمًا مع القيم NULL.
الصواب: خطأ
3) الاستعلام الفرعي العددي يجب أن يُرجع قيمة واحدة على الأكثر.
الصواب: صح
4) WITH RECURSIVE غير مدعوم في MySQL 8.
الصواب: خطأ
5) EXISTS يتوقف عند أول صف يجده.
الصواب: صح

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) الكلمة التي تجعل CTE تكراريًّا هي WITH .
الإجابة: RECURSIVE
2) لإرجاع الصفوف المحذوفة نضيف *
الإجابة: RETURNING
3) للتحقق من وجود صف مرتبط نستخدم (SELECT 1 …)
الإجابة: EXISTS

4السؤال الرابع: أسئلة عملية

1) كم موظفًا تحت مدير المستودع (بأي عمق، دونه هو)؟

query.sql
CREATE TABLE staff (id int PRIMARY KEY, name text, manager_id int REFERENCES staff(id));INSERT INTO staff VALUES (1, 'المدير العام', NULL), (2, 'مدير المبيعات', 1), (3, 'مدير المستودع', 1), (4, 'مندوب الرياض', 2), (5, 'مندوب جدة', 2), (6, 'أمين مخزن', 3), (7, 'مساعد مندوب', 4);WITH RECURSIVE t AS (SELECT id FROM staff WHERE id = 3 UNION ALL SELECT s.id FROM staff s JOIN t ON s.manager_id = t.id)SELECT count(*) - 1 FROM t;
الناتج الصحيح:
النتيجة · صف واحد
?column?
1

2) ما ناتج هذا الاستعلام؟

query.sql
SELECT count(*) FROM products WHERE price > (SELECT avg(price) FROM products);
الناتج الصحيح:
النتيجة · صف واحد
count
3
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس