SQLتحديد عدد الأسطر الأقصى التي يمكن أن يتم جلبها
- أهمية تحديد عدد الأسطر
- طريقة تحديد عدد الأسطر
- تجهيز قاعدة البيانات التي سنطبق عليها
- أمثلة حول ترتيب البيانات التي يتم جلبها
أهمية تحديد عدد الأسطر
من المهم جداً أن تضع حد أقصى لنتيجة الإستعلام إذا كان من المحتمل أن يرجع أكثر من سطر و ذلك للأسباب التالية.
1- أداء أفضل
وضع حد أقصى للنتائج من شأنه تحسين الأداء. إذا كان الإستعلام سيرجع عدد كبير من الأسطر فإنه سيستهلك الكثير من مصادر النظام (الذاكرة والمعالج) مما يؤدي إلى إبطاء عمل خادم قاعدة البيانات. إذاً تحديد النتائج، يقلل كمية البيانات التي يجب معالجتها و نقلها مما يؤدي إلى تسريع مدة تنفيذ الإستعلام.
2- كفاءة الموارد
النتائج الكبيرة تستهلك مساحة كبيرة من الذاكرة و كذلك الشبكة التي ستمر البيانات من خلالها. من خلال تحديد عدد الأسطر التي سترجه، فإنك تحرر هذه المصادر لمهمات أخرى و تحسن أداء خادم قاعدة البيانات.
3- تجربة مستخدم أفضل
المستخدم بشكل عام لا يحب أن يتفاعل مع عدد ضخم من النتائج. وضع حد أقصى للنتائج يضمن أن يتلقى المستخدم البيانات بشكل جيد و مفيد له، مما يحسن تجربة المستخدم. فمثلاً يفضل المستخدم أن يرى 10 مقالات جديدة في كل مرة يختار رؤية المزيد.
4- مزيد من الأمان
يمكن أن يساعد تحديد النتائج في منع تسرب البيانات و حماية المعلومات الحساسة حيث أنه في حال قيام الاستعلام عن طريق الخطأ باسترداد عدد كبير جداً من الأسطر فإنه قد يعرض البيانات لمستخدمين غير مصرح لهم رؤيتها.
5- قابلية التوسع
عندما يزداد عدد مستخدمي التطبيق فإن عدد الإتصالات المتزامنة إلى قاعدة البيانات ستزداد معهم، عندها يصبح الحد من نتائج الإستعلام مهم جداً للحفاظ على أداء النظام. بدون وضع حدود للنتائج، يمكن أن تصبح قاعدة البيانات مكتظة بالطلبات.
تحديد عدد النتائج هو أمر أساسي في أي مشروع، فمثلاً في قسم المقالات لاحظ أننا نعرض 10 مقالات فقط في كل صفحة لأنه لو كنا سنعرض جميع المقالات في كل مرة لأدى ذلك لضغط هائل على خادم قاعدة البيانات. أيضاً في حال بحثت في جوجل، يوتيوب، فيسبوك و في أي موقع آخر ستلاحظ دائماً أنهم يرجعوا لك عدد محدد من النتائج في كل مرة و ليس جميعها.
طريقة تحديد عدد الأسطر
طريقة تحديد عدد الأسطر الأقصى التي يمكن أن يرجعها الإستعلام تختلف من قاعدة بيانات لأخرى كما يلي:
- في قواعد بيانات MySQL و SQLite نستخدم الجملة LIMIT.
- في قواعد بيانات SQL Server و Access نستخدم الجملة TOP.
- في قواعد بيانات Oracle نستخدم الجملة ROWNUM أو أسلوب FETCH FIRST n ROWS ONLY
في هذه الدورة سنعتمد تحديد النتائج بأسلوب قواعد بيانات MySQL.
طريقة تحديد عدد النتائج في MySQL
في قواعد بيانات MySQL نستخدم الجملة LIMIT في نهاية الأمر SELECT لتحديد عدد النتائج الأقصى التي قد ترجع على النحو التالي.- مكان الكلمة
offset
يمكن وضع عدد الأسطر المراد تجاوزها. - مكان الكلمة
row_count
يجب وضع عدد الأسطر الأقصى التي يمكن أن تحتويها النتيجة.
تجهيز قاعدة البيانات التي سنطبق عليها
قم بتنفيذ الإستعلام التالي حتى تنشئ قاعدة بيانات جديدة إسمها harmash
و تنشئ فيها جدول إسمه employees
يحتوي على بيانات 10 موظفين.
مثال
بعد تنفيذ الإستعلام السابق في phpMyAdmin سيتم إنشاء قاعدة البيانات harmash
و إنشاء الجدول employees
بداخلها.
قم بالنقر على إسم قاعدة البيانات harmash
من القائمة اليسرى حتى تبدأ بالتعامل معها و تطبيق ما ستتعلمه في هذا الدرس.
فيما يلي البيانات التي قمنا بإضافتها بشكل إفتراضي في الجدول employees
.
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
6 | Mhamad | Harmush | 0 | 700.00 | 1993-11-12 |
7 | Ahmad | Asaadi | 1 | 850.00 | 1995-03-10 |
8 | Mostafa | Shawki | 1 | 920.00 | 1990-02-14 |
9 | Jana | Alkassem | 0 | 780.00 | 1991-08-12 |
10 | Houssam | Zahrani | 1 | 880.00 | 1985-09-20 |
أمثلة حول ترتيب البيانات التي يتم جلبها
الإستعلام التالي يجلب معلومات أول ثلاث موظفين في الجدول.
المثال الأول
يمكنك كتابة الإستعلام كما يلي أيضاً.
النتيجة
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
الإستعلام التالي يتجاوز سطرين في الجدول ثم يجلب معلومات أول ثلاث موظفين من بعدهم.
المثال الثاني
النتيجة
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
3 | Said | Alnaja | 1 | 900.00 | 1988-07-12 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
5 | Amani | Sarrouf | 1 | 1000.00 | 1991-10-27 |
الإستعلام التالي يجلب معلومات أول ثلاثة موظفين ولدوا عام 1990 أو بعده.
المثال الثالث
يمكنك كتابة الإستعلام كما يلي أيضاً.
النتيجة
id | first_name | last_name | is_married | salary | birthday |
---|---|---|---|---|---|
1 | Ahmad | Alhazem | 0 | 800.00 | 1990-10-23 |
2 | Rami | Algharib | 0 | 750.00 | 1992-05-08 |
4 | Noura | Jamali | 0 | 845.00 | 1994-12-04 |
الإستعلام التالي يحضر أعلى راتب يتم إعطاؤه للموظف في الشركة.
الحيلة التي سنفعلها هنا للحصول على أعلى راتب هي ترتيب أسطر الجدول بشكل تنازلي (أي من الأكبر إلى الأصغر) على أساس الراتب و من ثم نعرض الراتب الموضوع في أول سطر لأنه حينها سيكون هو أعلى راتب في العمود كله.
المثال الرابع
يمكنك كتابة الإستعلام كما يلي أيضاً.
النتيجة
Highest Salary |
---|
1000.00 |
في المثال السابق كان باستطاعتنا استخدام دالة إسمها MAX() للحصول على أعلى قيمة و هذا الأمر سيمر معك في درس لاحق.
الإستعلام التالي يحضر أدنى راتب يتم إعطاؤه للموظف في الشركة.
الحيلة التي سنفعلها هنا للحصول على أدنى راتب هي ترتيب أسطر الجدول بشكل تصاعدي ( أي من الأصغر إلى الأكبر ) على أساس الراتب و من ثم نعرض الراتب الموضوع في أول سطر لأنه حينها سيكون هو أدنى راتب في العمود كله.
المثال الخامس
يمكنك كتابة الإستعلام كما يلي أيضاً.
النتيجة
Lowest Salary |
---|
700.00 |
في المثال السابق كان باستطاعتنا استخدام دالة إسمها MIN() للحصول على أدنى قيمة و هذا الأمر سيمر معك في درس لاحق.
الإستعلام التالي يحضر ثاني أعلى راتب يتم إعطاؤه للموظف في الشركة.
الحيلة التي سنفعلها هنا للحصول على ثاني أعلى راتب هي ترتيب أسطر الجدول بشكل تنازلي (أي من الأكبر إلى الأصغر) على أساس الراتب مع التأكد من أنه لا يوجد أي قيم مكررة في النتيجة و من ثم نعرض الراتب الموضوع في ثاني سطر لأنه حينها سيكون هو ثاني أعلى راتب في العمود كله.
المثال السادس
النتيجة
Second Highest Salary |
---|
920.00 |
في حال أردت عرض أول أعلى ثلاث رواتب يمكنك وضع الإستعلامات التي كتبتها في الأمثلة السابقة نفسها بشكل متداخل و من ثم تجميعها بداخل أمر SELECT و هذا الأسلوب يسمى Sub Queries.
المثال السابع
النتيجة
First Highest Salary | Second Highest Salary | Third Highest Salary |
---|---|---|
1000.00 | 920.00 | 900.00 |
طريقة كتابة هذا الإستعلام معقدة قليلاً و لم نشرحها من قبل، و لكن لا تقلق لأنك ستتعلمها لاحقاً في درس خاص في الدورة و الهدف من المثال كان فقط إعلامك أنه يمكنك الإستفادة من الكلمة LIMIT في حالات متقدمة ليس إلا.