🧪 التدريبات
كل تمرين «جرّب بنفسك» في مكان واحد: اقرأ المطلوب، ثم اكتب الحل وشغّله داخل صفحة الدرس.
الوحدة 1: مقدمة للبرمجة الإجرائية
عدّاد عملاء الرياضتمهيدي · الدرس 1: لماذا البرمجة الإجرائية داخل قاعدة البيانات؟
اكتب كتلة DO تحسب عدد العملاء في مدينة الرياض وتطبع النتيجة.←تقرير المخزونمتوسط · الدرس 2: الكتلة الإجرائية: المتغيرات والشروط والحلقات
اكتب كتلة تمر على المنتجات من 1 إلى 6 وتطبع حالة مخزون كل منها.←
اكتب كتلة DO تحسب عدد العملاء في مدينة الرياض وتطبع النتيجة.←تقرير المخزونمتوسط · الدرس 2: الكتلة الإجرائية: المتغيرات والشروط والحلقات
اكتب كتلة تمر على المنتجات من 1 إلى 6 وتطبع حالة مخزون كل منها.←
الوحدة 2: إنشاء إجراءات مخزنة ودوال
إجمالي الطلبمتوسط · الدرس 3: أول دالة: CREATE FUNCTION
اكتب دالة
اكتب إجراء
اكتب دالة
order_total(oid int) تُرجع إجمالي طلب: مجموع الكمية × سعر الوحدة لكل بنوده.←إلغاء طلبمتوسط · الدرس 4: أول إجراء مخزن: CREATE PROCEDURE و CALLاكتب إجراء
cancel_order(p_oid int) يلغي الطلب إن كانت حالته new أو paid فقط؛ أما المشحون أو الملغى فلا يتغير.←الوحدة 3: تحسين الأداء وتنفيذ استعلامات محسّنة
اجعل البحث يستخدم فهرسًامتوسط · الدرس 5: كيف ينفّذ PostgreSQL الاستعلام؟ EXPLAIN
استعلام يبحث عن بنود منتج معيّن في
هذا الاستعلام يحسب طلبات سبتمبر 2025 حسب الحالة، لكنه يقرأ الجدول كله رغم وجود فهرس على التاريخ. أعد كتابته ليستفيد من الفهرس، دون تغيير النتيجة.←
استعلام يبحث عن بنود منتج معيّن في
order_items يقرأ الجدول كله (40 ألف صف). أنشئ فهرسًا يجعل المخطِّط يستخدمه، ثم اعرض الخطة.←تقرير مبيعات سبتمبرمتوسط · الدرس 6: قياس الأداء وأخطاؤه الشائعةهذا الاستعلام يحسب طلبات سبتمبر 2025 حسب الحالة، لكنه يقرأ الجدول كله رغم وجود فهرس على التاريخ. أعد كتابته ليستفيد من الفهرس، دون تغيير النتيجة.←
الوحدة 4: تصميم جداول البيانات بالعلاقات والفهارس
تقييمات المنتجاتمتوسط · الدرس 7: تصميم الجداول والعلاقات
يريد المتجر أن يقيّم العملاء المنتجات: كل عميل يقيّم المنتج مرة واحدة فقط، بدرجة من 1 إلى 5 وتعليق اختياري. صمّم الجدول
في الجدول
قاعدة المتجر فيها أربعة مفاتيح أجنبية بلا فهارس. أنشئ فهرسًا لكل منها، ثم اعرض فهارس الجداول.←
يريد المتجر أن يقيّم العملاء المنتجات: كل عميل يقيّم المنتج مرة واحدة فقط، بدرجة من 1 إلى 5 وتعليق اختياري. صمّم الجدول
reviews.←فكّك جدول الموردينمتقدم · الدرس 8: التطبيع: من جدول واحد إلى جداول مترابطةفي الجدول
sales_flat بيانات الموردين مكررة. أنشئ جدول suppliers واملأه من البيانات الموجودة، ثم أضف إلى sales_flat عمود supplier_id واملأه، واحذف عمودي المورد القديمين.←فهرسة المفاتيح الأجنبيةمتوسط · الدرس 9: الفهارس في التصميم: متى ولماذا؟قاعدة المتجر فيها أربعة مفاتيح أجنبية بلا فهارس. أنشئ فهرسًا لكل منها، ثم اعرض فهارس الجداول.←
الوحدة 5: إنشاء جداول البيانات
جدول الكوبوناتمتوسط · الدرس
أنشئ جدول
أنشئ جدول
أضف إلى المتجر جدول الموردين، واربط المنتجات به، بحيث إذا حُذف مورد بقيت منتجاته بلا مورد.←
10: CREATE TABLE وأنواع البياناتأنشئ جدول
coupons لكوبونات الخصم بأنواع مناسبة.←قيود جدول الموظفينمتوسط · الدرس 11: القيود: NOT NULL و UNIQUE و CHECK و DEFAULTأنشئ جدول
staff لموظفي المتجر بالقيود المطلوبة.←الموردون والمنتجاتمتقدم · الدرس 12: المفاتيح الأجنبية وتعديل الجداولأضف إلى المتجر جدول الموردين، واربط المنتجات به، بحيث إذا حُذف مورد بقيت منتجاته بلا مورد.←
الوحدة 6: تحسين أداء جداول البيانات وإنشاء الفهارس
فهرس لوحة الموظفينمتقدم · الدرس 13: إنشاء الفهارس وإدارتها
لوحة الموظفين تعرض كل دقيقة الطلبات المدفوعة لعميل معيّن من الأحدث للأقدم:
أنشئ جدول
لوحة الموظفين تعرض كل دقيقة الطلبات المدفوعة لعميل معيّن من الأحدث للأقدم:
WHERE status = 'paid' AND customer_id = … ORDER BY order_date DESC. صمّم فهرسًا واحدًا يخدمها بأقل حجم.←أجزاء الطلبات حسب المنطقةمتقدم · الدرس 14: التجزئة والصيانة: Partitioning و ANALYZEأنشئ جدول
regional_orders مجزّأ بالقائمة حسب المدينة: جزء للمنطقة الوسطى (الرياض)، وجزء للغربية (جدة، مكة، المدينة)، وجزء افتراضي لبقية المدن. ثم انسخ إليه طلبات المتجر مع مدن عملائها.←الوحدة 7: مفاهيم الإجراءات المخزنة والدوال
بريد لا يتكرر بأي كتابةمتوسط · الدرس 15: الدالة أم الإجراء؟ الفوائد والاستخدامات
العملاء يكتبون بريدهم بأحرف كبيرة أو بمسافات زائدة، فيتكرر البريد نفسه بأشكال مختلفة. اكتب دالة توحّد البريد، واستخدمها في فهرس فريد يمنع التكرار.←دالة الأسعار لتطبيق الجوالمتقدم · الدرس 16: المعاملات والأمان في البرامج المخزنة
تطبيق الجوال يتصل بالقاعدة بالدور
العملاء يكتبون بريدهم بأحرف كبيرة أو بمسافات زائدة، فيتكرر البريد نفسه بأشكال مختلفة. اكتب دالة توحّد البريد، واستخدمها في فهرس فريد يمنع التكرار.←دالة الأسعار لتطبيق الجوالمتقدم · الدرس 16: المعاملات والأمان في البرامج المخزنة
تطبيق الجوال يتصل بالقاعدة بالدور
mobile_app. نريده أن يعرف سعر المنتج بعد الضريبة فقط، دون أي صلاحية على الجداول.←الوحدة 8: إنشاء إجراءات مخزنة
ملخص الطلبمتوسط · الدرس 17: معاملات الإجراء: IN و OUT و INOUT
اكتب إجراء
اكتب إجراء
اكتب إجراء
order_summary يستقبل رقم طلب ويُخرج عدد بنوده وإجماليه.←بيع آمنمتقدم · الدرس 18: معالجة الأخطاء: RAISE و EXCEPTIONاكتب إجراء
safe_sell(pid int, n int) يبيع n قطعة من المنتج بشروط عمل واضحة.←الوحدة 9: إنشاء واستخدام الدوال
الأكثر مبيعًا في التصنيفمتقدم · الدرس 19: دوال تُرجع جداول: RETURNS TABLE
اكتب دالة جدولية
اكتب كتلة
اكتب محفزًا على
اكتب دالة جدولية
best_sellers(cat int, k int) تُرجع أكثر k منتجات مبيعًا (بالكميات) في التصنيف.←تقرير المدن بمؤشرمتوسط · الدرس 20: الحلقات على النتائج والمؤشراتاكتب كتلة
DO تطبع لكل مدينة عدد عملائها، مرتبة بالعدد تنازليًّا ثم باسم المدينة، باستخدام مؤشر صريح.←خصم المخزون تلقائيًّامتقدم · الدرس 21: المحفزات: دوال تعمل تلقائيًّااكتب محفزًا على
order_items ينقص مخزون المنتج تلقائيًّا عند إضافة بند، ويرفض البند إن لم يكفِ المخزون.←الوحدة 10: تحسين الاستعلامات باستخدام لغة البرمجة الإجرائية
تصنيف العملاء بأمر واحدمتقدم · الدرس 22: التفكير بالمجموعات بدل الحلقات
أضف إلى customers عمود
اكتب دالة
أضف إلى customers عمود
tier واملأه حسب مجموع مشتريات العميل (كل الطلبات): ذهبي gold من 3000 فأكثر، وفضي silver من 500 فأكثر، وإلا basic. بلا حلقات.←عدّاد آمن لأي جدولمتقدم · الدرس 23: SQL الديناميكي الآمن: EXECUTE و formatاكتب دالة
count_where(tbl text, col text, val text) تُرجع عدد صفوف الجدول tbl التي يساوي فيها العمود col القيمة val، بأمان من الحقن.←الوحدة 11: تطوير استعلامات محسّنة باستخدام البرمجة الإجرائية
سلسلة الإدارةمتقدم · الدرس 24: الاستعلامات الفرعية و CTE
لموظف «مساعد مندوب» (رقم 7)، اعرض سلسلة مدرائه صعودًا حتى المدير العام، مع مستوى كل منهم.←أغلى منتجين في كل تصنيفمتوسط · الدرس 25: دوال النوافذ: الترتيب والمجاميع المتراكمة
اعرض لكل تصنيف أغلى منتجين، مع ترتيب كل منهما في تصنيفه.←لوحة المبيعات اليوميةمتقدم · الدرس 26: العروض والعروض المادية
لوحة الإدارة تعرض مبيعات كل يوم، وتُفتح مئات المرات. ابنِ لها عرضًا ماديًّا يُحدَّث دون إيقاف القراء.←
لموظف «مساعد مندوب» (رقم 7)، اعرض سلسلة مدرائه صعودًا حتى المدير العام، مع مستوى كل منهم.←أغلى منتجين في كل تصنيفمتوسط · الدرس 25: دوال النوافذ: الترتيب والمجاميع المتراكمة
اعرض لكل تصنيف أغلى منتجين، مع ترتيب كل منهما في تصنيفه.←لوحة المبيعات اليوميةمتقدم · الدرس 26: العروض والعروض المادية
لوحة الإدارة تعرض مبيعات كل يوم، وتُفتح مئات المرات. ابنِ لها عرضًا ماديًّا يُحدَّث دون إيقاف القراء.←
الوحدة 12: تنفيذ أمثلة عملية لتحسين استعلامات البيانات
سرّع تقرير الإيرادمتقدم · الدرس 27: مشروع: من استعلام بطيء إلى سريع
هذا التقرير يحسب لكل حالة طلب عدد الطلبات وإيرادها في الربع الثالث من 2025 (يوليو إلى سبتمبر)، لكنه بطيء. أعد كتابته بالنتيجة نفسها.←مواصفات مرنة للمنتجاتمتوسط · الدرس 28: قواعد البيانات السحابية و NoSQL
أضف إلى المنتجات عمود مواصفات
هذا التقرير يحسب لكل حالة طلب عدد الطلبات وإيرادها في الربع الثالث من 2025 (يوليو إلى سبتمبر)، لكنه بطيء. أعد كتابته بالنتيجة نفسها.←مواصفات مرنة للمنتجاتمتوسط · الدرس 28: قواعد البيانات السحابية و NoSQL
أضف إلى المنتجات عمود مواصفات
jsonb، واملأه لمنتجين، وافهرسه، ثم ابحث فيه.←