SQL Databases • المستوى الثاني • الدرس 2
العودة لفهرس المستوىالترتيب والحد والصفحات (ORDER BY & LIMIT/OFFSET)
أهداف الدرس
- ترتيب النتائج تصاعدياً وتنازلياً باستخدام
ORDER BY. - الترتيب حسب حقلين أو أكثر (Multi-column Sorting).
- تحديد عدد النتائج بـ
LIMITوتخطّيها بـOFFSET. - بناء نظام Pagination كامل (صفحات متعددة) في SQL.
1. الترتيب — ORDER BY
يُستخدم ORDER BY لترتيب نتائج الاستعلام حسب عمود أو أكثر. القيمة ASC = تصاعدي (الأصغر أولاً)، DESC = تنازلي (الأكبر أولاً). الافتراضي هو ASC.
sql
-- ترتيب تصاعدي حسب العمر (الأصغر أولاً)
SELECT name, age FROM users
ORDER BY age ASC;
-- ترتيب تنازلي حسب العمر (الأكبر أولاً)
SELECT name, age FROM users
ORDER BY age DESC;
-- ترتيب حسب حقل نصي (أبجدي)
SELECT name FROM users
ORDER BY name ASC;
-- ترتيب حسب حقول متعددة:
-- أولاً حسب country (تصاعدي)، ثم age (تنازلي)
SELECT name, country, age FROM users
ORDER BY country ASC, age DESC;تصاعدي = ASC
10، 20، 30، 40، 50
تنازلي = DESC
50، 40، 30، 20، 10
2. الحد والتخطّي — LIMIT و OFFSET
LIMIT n — أول n صف
SELECT * FROM users LIMIT 3
OFFSET n — تجاهل أول n
SELECT * FROM users LIMIT 3 OFFSET 2
sql
-- أول 5 مستخدمين
SELECT * FROM users LIMIT 5;
-- تجاهل أول 10 مستخدمين
SELECT * FROM users OFFSET 10;
-- المستخدمون 11-15 (تخطي 10، خذ 5)
SELECT * FROM users LIMIT 5 OFFSET 10;
-- الترتيب مهم: ORDER BY -> LIMIT -> OFFSET3. Pagination — بناء صفحات متعددة
في التطبيقات الحقيقية، نعرض البيانات في صفحات. المعادلة الذهبية:
المعادلة
OFFSET = (pageNumber - 1) × pageSize LIMIT = pageSize
sql
-- مثال: عرض 2 مستخدم لكل صفحة
-- الصفحة 1 — OFFSET = (1-1)*2 = 0
SELECT name, age FROM users
ORDER BY age ASC
LIMIT 2 OFFSET 0;
-- الصفحة 2 — OFFSET = (2-1)*2 = 2
SELECT name, age FROM users
ORDER BY age ASC
LIMIT 2 OFFSET 2;
-- الصفحة 3 — OFFSET = (3-1)*2 = 4
SELECT name, age FROM users
ORDER BY age ASC
LIMIT 2 OFFSET 4;
-- في تطبيقك:
-- const page = 2;
-- const pageSize = 20;
-- const offset = (page - 1) * pageSize;4. ترتيب تنفيذ SQL مع ORDER BY و LIMIT
| # | الجزء | الوظيفة |
|---|---|---|
| 1 | FROM | جلب الجدول |
| 2 | WHERE | فلترة الصفوف |
| 3 | SELECT | اختيار الأعمدة |
| 4 | ORDER BY | ترتيب النتائج |
| 5 | LIMIT / OFFSET | تحديد العدد والتخطي |
ملاحظة: ORDER BY يُطبَّق قبل LIMIT — لذلك الترتيب مهم جداً عند استخدام Pagination.
التطبيق العملي المباشر
تحدي الدرس الثاني: الترتيب والصفحات
قم بالتعديل على الكود بداخل المحرر أدناه لتطبيق المتطلبات التالية:
- أضف استعلاماً لترتيب المستخدمين حسب الاسم أبجدياً (
ORDER BY name ASC). - أضف استعلاماً لترتيب حسب حقلين:
country ASC, age DESC. - أضف استعلاماً للصفحة الأولى (
LIMIT 2 OFFSET 0) مع الترتيب حسب العمر. - أضف استعلاماً للصفحة الثانية (
LIMIT 2 OFFSET 2) مع الترتيب حسب العمر. - أضف استعلاماً يجمع
WHERE country = 'السعودية'+ORDER BY age DESC+LIMIT 5. - احتفظ بالاستعلامين الأصليين.
- اضغط "تشغيل الكود" لرؤية النتائج من آخر استعلام.
⏳ جارٍ تحميل المحرر التفاعلي...