ما هو الاستعلام ولماذا نحتاجه؟ (What is a query and why do we need it?)
تعتبر الاستعلامات (Queries) بمثابة القلب النابض لأي قاعدة بيانات، فبدونها تصبح هذه الأخيرة مجرد مخزن للمعلومات بدون أي فائدة، و معها تتحول البيانات إلى معلومات مفيدة و تقارير و تحليلات تساهم في التسيير الجيد للنظام المعلوماتي للمؤسسة من جهة، كما تساعد على اتخاذ القرارات السليمة من جهة أخرى.
فبدلاً من النظر المباشر إلى آلاف السجلات المخزنة في الجداول و محاولة
فهم و استخلاص المعلومات منها، تستعمل الاستعلامات بكل سهولة و بدون أي
جهد يذكر للحصول على ذلك.
سوف نتعرف في هذا الفصل على ما يلي:
1. ما هو الاستعلام،
استعمالاته، أنواعه و طرق إنشائه،
2. إنشاء
استعلام بواسطة معالج الاستعلام (Query
Wizard)،
3. إنشاء
استعلام بواسطة تصميم الاستعلام (Query
Design)،
4. أمثلة تطبيقية على إدارة مدرسة التكوين.
1) ما هو الاستعلام (Query)؟
الاستعلام بكل بساطة عبارة عن سؤال يُطرح بلغة
الاستعلامات الهيكلية (SQL) على
قاعدة البيانات من طرف المستخدم فيقوم نظام إدارة قواعد البيانات بالإجابة عليه و تنفيذ
المطلوب منه بدقة، و يستعمل لاسترجاع البيانات، تحليلها، و إجراء عمليات عليها بطريقة منظمة و سلسة.
ملاحظة
1: لا تُكتب الاستعلامات باللغة الطبيعية و إنما
تُكتب بلغة برمجة الاستعلامات الهيكلية SQL (Structured Query
Language) و هي لغة تصريحية غير إجرائية يفهمها
نظام إدارة قواعد البيانات العلائقية.
"SQL هو لغة برمجة قواعد بيانات غير إجرائية
تُستخدم لإنشاء قواعد البيانات ومعالجة البيانات واسترجاعها وتوفير الأمان لهياكل
قواعد البيانات العلائقية. غالبًا ما يُشار إلى
SQL على أنها غير
إجرائية بسبب الطريقة التي تقوم بها بمعالجة التعليمات. على عكس لغات الحاسوب
الإجرائية عالية المستوى مثل Visual Basic وC++، التي تعالج التعليمات بناءً على كيفية تنفيذ العملية، تقوم SQL بمعالجة
التعليمات بناءً على العملية التي يجب تنفيذها. على سبيل المثال، "ما الذي
يجب استرجاعه"، "ما الذي يجب إدراجه"، أو "ما
الذي يجب حذفه". SQL تعني لغة الاستعلامات الهيكلية وقد تم إنشاؤها
لأول مرة في عام 1970. كانت تُسمى في البداية SEQUEL و التي تعني
لغة الاستعلام الإنجليزية الهيكلية."
1.1. استعمالات الاستعلام؟
للاستعلامات
استعمالات عديدة منها استخراج و عرض البيانات، تحليل و تجميع البيانات،
إنشاء التقارير و تحديث البيانات.
1.1.1. استخراج و عرض بيانات محددة
يمكن استخدام
الاستعلامات للحصول على سجلات معينة من جدول واحد أو مجموعة من الجداول المرتبطة
ببعضها البعض تلبي معايير و شروط
محددة، كما يمكن فرزها حسب حقول محددة.
مثال:
- استخراج قائمة الطلبة المسجلين في تكوين "علوم مالية و محاسبة" مرتبة تصاعديا حسب "تاريخ التسجيل"،
- استخراج قائمة الطلبة المسجلين في تكوين "علوم مالية و محاسبة" و المولودين في ولاية "بشار" مرتبة تصاعديا حسب "تاريخ التسجيل"،
- استخراج قائمة الطلبة المولودين في ولاية "بشار" مرتبة أبجديا تصاعديا حسب "الاسم و اللقب"،
- استخراج قائمة المقاييس التي تنتمي إلى تكوين "علوم اقتصادية" مرتبة تنازليا حسب "المعامل"،
- استخراج قائمة البلديات التي تنتمي إلى ولاية "قسنطينة".
2.1.1. تحليل و تجميع البيانات
يمكن استخدام
الاستعلامات لإجراء إحصائيات، تحليل، تجميع البيانات و استخلاص معلومات مفيدة
تساعد على اتخاذ القرارات السليمة.
مثال:
- حساب المداخيل حسب كل تكوين،
- حساب التكوين المطلوب بكثرة و يوفر مداخيل أكثر،
- حساب معدلات الطلبة لكل تكوين و استنتاج الناجحين و الراسبين،
3.1.1. إنشاء تقارير
يمكن استخدام
نتائج الاستعلامات لإنشاء تقارير مخصصة جاهزة للطباعة.
مثال:
- استخدام استعلام حساب المعدلات لإنشاء كشف نقاط الطلبة.
4.1.1. تحديث البيانات
يمكن استخدام
الاستعلامات لتعديل (تغيير) البيانات، إدراج بيانات
جديدة أو حذف سجلات في قاعدة البيانات.
مثال:
- في حالة زيادة تكاليف التكوين يمكن مثلاً تعديل ثمن جميع التكوينات بزيادة قدرها 10%.
2.1. أنواع الاستعلامات في Access
1.2.1. استعلام التحديد (Select Query)
يعتبر استعلام
التحديد من أشهر الاستعلامات و الأكثرها شيوعا و استعمالا، و يسمح
باستخراج و عرض البيانات من جدول واحد أو مجموعة من الجداول المرتبطة
ببعضها البعض دون تعديلها أو تغيرها؛ يمكن إضافة شروط لتصفية النتائج و استخراج
السجلات التي تلبي معايير محددة، كما يمكن أيضا فرزها حسب حقول معينة.
لاستعلام
التحديد الشكل العام التالي:
SELECT (Fields List)
FROM Table Name1
INNER JOIN Table Name2 ON Table Name1.Champs1 = Table
Name2.Champs2
WHERE (Conditions List)
ORDER BY (Fields List) ;
1. تستعمل الكلمة الاجبارية SELECT لتحديد الحقول (Fields List) المراد استرجاعها من جدول أو مجموعة من الجداول المرتبطة
ببعضها،
2. تستعمل الكلمة الاجبارية FROM لتحديد تسمية الجدول Table Name1 الذي تسترجع منه الحقول المشار إليها في القائمة (Fields List)،
3. تستعمل الكلمة الاختيارية INNER JOIN لإضافة و ربط
الجداول خاصة في حالة كانت الحقول المراد استرجاعها و المشار إليها في القائمة
(Fields
List) لا تنتمي إلى جدول واحد فقط،
4. تستعمل الكلمة الاختيارية WHERE لتحديد المعايير والشروط (Conditions List) التي يجب أن تحققها السجلات المراد استرجاعها،
5. تستعمل الكلمة الاختيارية ORDER BY لتحديد حقول الفرز (Fields List) و طريقة الترتيب تصاعدي أو تنازلي،
6. ينتهي الاستعلام إجباريا بفاصلة منقوطة (;).
ملاحظة 2: لإظهار و استرجاع جميع الحقول دفعة واحدة، نستعمل علامة النجمة (*) مع
كلمة التحديد SELECT ولكن من المستحسن جداً عدم استعمالها.
مثال1:
- استخراج قائمة البلديات التي تنتمي
إلى الولاية رقم 25.
- استخراج قائمة الطلبة المسجلين في تكوين "علوم
مالية و محاسبة" و المولودين في ولاية "بشار" مرتبة تصاعديا
حسب الاسم و اللقب.
2.2.1. استعلام التحديث (Update Query)
يستخدم استعلام
التحديث لتعديل بمعنى تغيير قيم بيانات موجودة في جدول واحد، يمكن تعديل قيم حقل
واحد أو مجموعة من الحقول، كما يمكن تطبيق التحديث على جميع السجلات أو على
تلك التي تلبي معايير وشروط محددة.
لاستعلام التحديث
الشكل العام التالي:
UPDATE Table Name
SET
Field1 = X ,
Field2 = Y ,
Field3 = Z
WHERE (Conditions List) ;
1. تستعمل الكلمة الاجبارية UPDATE للإشارة إلى تعديل أو تغيير
قيم حقول الجدول Table
Name،
2. تستعمل الكلمة الاجبارية SET لتحديد الحقول Field1, Field2, Field3 المراد تعديلها بالقيم X, Y, Z، يمكن أن تكون هذه الأخيرة
عبارة عن قيم ثابتة أو صيغ،
3. في حالة تحديث مجموعة من الحقول، يجب التفريق بين الحقول إجبارياً بواسطة
فاصلة (,) ما عدا الحقل الأخير،
4. تستعمل الكلمة الاختيارية WHERE لتحديد المعايير والشروط (Conditions List) التي يجب أن تحققها السجلات المراد تحديثها في حالة الرغبة في
تحديث بعض السجلات و ليس جميعها،
5. ينتهي الاستعلام إجباريا بفاصلة منقوطة (;).
ملاحظة 3: استعمل استعلام التحديث (UPDATE) بحذر لأنه لا يمكن التراجع و إلغاء التحديثات التي تتم على
الجدول.
لتطبيق التحديث على جميع سجلات الجدول، يكتب استعلام التحديث بدون الكلمة
المحجوزة WHERE بالشكل التالي:
UPDATE Table Name
SET
Field1 = X,
Field2 = Y,
Field3 = Z ;
مثال:
- في حالة زيادة تكاليف
التكوين، يمكن تعديل ثمن جميع التكوينات مثلا بزيادة قدرها 10%.
3.2.1. استعلام الإلحاق (Append Query)
يستخدم استعلام
الإلحاق لإضافة سجلات جديدة إلى جدول موجود باستخدام بيانات من مصادر أخرى، ويقوم
بنسخ البيانات من جدول ثم يضيفها إلى جدول آخر موجود.
مثال:
- تحضير قائمة الطلبة لإدراجها في جدول "النقطة"
(Note) حتى يتسنى إدخال النقاط في مقياس ما.
4.2.1. استعلام الحذف (Delete Query)
يحذف سجلات من
جدول بناءً على شرط معين، يمكن حذف سجل واحد،
مجموعة من السجلات تحقق شرط معين أو حذف جميع سجلات الجدول.
لاستعلام الحذف
الشكل العام التالي:
DELETE
FROM Table Name
WHERE (Conditions List) ;
1. تستعمل الكلمة الاجبارية DELETE للإشارة إلى استعلام حذف
السجلات،
2. تستعمل الكلمة الاجبارية FROM لتحديد الجدول Table Name الذي تحذف منه السجلات،
3. تستعمل الكلمة الاختيارية WHERE لتحديد المعايير والشروط (Conditions List) التي يجب أن تحققها السجلات المراد حذفها،
4.
ينتهي الاستعلام إجباريا
بفاصلة منقوطة (;).
ملاحظة 4: استعمل استعلام الحذف (DELETE) بحذر شديد لأنه لا يمكن التراجع و إلغاء حذف السجلات التي
تتم على الجدول و من التوصيات المهمة جدا، إجراء نسخة احتياطية لقاعدة
البيانات قبل ذلك.
لحذف جميع
سجلات جدول ما نستعمل علامة النجمة
(*) في استعلام الحذف بالشكل التالي:
DELETE *
FROM Table Name ;
5.2.1. استعلام إنشاء جدول (Make-Table Query)
يستخدم استعلام
إنشاء جدول لإنشاء جدول جديد بناءً على نتائج استعلام تحديد.
مثال:
- إنشاء جدول يحتوي على الطلبة الناجحين انطلاقا من
جدول النقاط.
6.2.1. استعلام المعلمات أو الوسيطات (Parameter Query)
من بين
الاستعلامات المهمة والضرورية جداً لأن نتيجة هذا الاستعلام غير ثابتة أي متغيرة
حسب المعلمة (الوسيط) التي توضع بين [ ] و يطلب من المستخدم إدخال
قيمتها مباشرة قبل تشغيل الاستعلام؛ يمكن استخدام المعلمات مع جميع أنواع
الاستعلامات الأخرى (التحديد، التحديث، الحذف، التجميع، ...).
1.6.2.1. استعمال المعلمات مع استعلام التحديد
عند استعمال
المعلمات مع استعلام التحديد (Select Query)،
فإن المعلمة تكتب بين [ ] في سطر الكلمة المحجوزة WHERE بالشكل التالي:
SELECT (Fields List)
FROM Table Name1
INNER JOIN Table Name2 ON
Table Name1.Champs1 = Table Name2.Champs2
WHERE (((Column Name1) = [أدخل قيمة الحقل1]) AND / OR
((Column Name2 > [أدخل قيمة الحقل2])))
ORDER BY (Fields List) ;
1. تستعمل الكلمة الاجبارية SELECT لتحديد الحقول (Fields List) المراد استرجاعها من جدول أو مجموعة من الجداول المرتبطة
ببعضها البعض،
2. تستعمل الكلمة الاجبارية FROM لتحديد تسمية الجدول Table Name1 الذي تسترجع منه الحقول المشار إليها في القائمة (Fields List)،
3. تستعمل الكلمة الاختيارية INNER JOIN لإضافة و ربط الجداول
خاصة في حالة كانت الحقول المراد استرجاعها و المشار إليها في القائمة (Fields List) لا تنتمي إلى جدول واحد فقط،
4. تستعمل الكلمة الاجبارية WHERE لتحديد المعايير والشروط التي
يجب أن تحققها السجلات المراد استرجاعها، يجب أن تكتب بين [ ]،
5. تستعمل الكلمة الاختيارية ORDER BY لتحديد حقول الفرز (Fields List) و طريقة الترتيب تصاعدي أو تنازلي،
6. ينتهي الاستعلام إجباريا بفاصلة منقوطة (;).
مثال:
- استعمال المعلمة مع استعلام التحديد "عرض
قائمة الطلبة حسب التكوين المطلوب".
2.6.2.1. استعمال المعلمات مع استعلام التحديث
عند استعمال
المعلمات مع استعلام التحديث (Update Query)،
فإن المعلمة التي تكتب بين [
] يمكن أن تظهر في سطر الكلمة المحجوزة SET لإدخال قيم الحقول
المراد تحديثها أثناء التشغيل، أو في سطر الكلمة المحجوزة WHERE لتحديد السجلات التي تنطبق عليها عملية التحديث أو في كليهما معاً بالشكل
التالي:
UPDATE Table Name
SET
Field1 = [أدخل قيمة الحقل1],
Field2 = [أدخل قيمة الحقل2],
Field3 = [أدخل قيمة الحقل3]
WHERE (((Column Name1) = [أدخل قيمة الحقل1]) AND / OR
((Column Name2 > [أدخل قيمة الحقل2]))) ;
1. تستعمل الكلمة الاجبارية UPDATE للإشارة إلى تعديل أو تغيير
قيم حقول الجدول Table
Name،
2. تستعمل الكلمة الاجبارية SET لتحديد الحقول Field1, Field2, Field3 المراد تعديلها بالقيم التي يُطلب من المستخدم إدخالها أثناء
تشغيل الاستعلام،
3. يجب التفريق بين الحقول إجبارياً بواسطة فاصلة (,) ما عدا الحقل الأخير،
4. تستعمل الكلمة الاختيارية/الإجبارية WHERE لتحديد المعايير والشروط (Conditions List) التي يجب أن تحققها السجلات المراد تحديثها في حالة الرغبة في
تحديث بعض السجلات و ليس جميعها،
5. ينتهي الاستعلام إجباريا بفاصلة منقوطة (;).
ملاحظة 5: يجب أن تظهر المعلمة على الأقل مرة واحدة في الاستعلام، إما في سطر الكلمة
المحجوزة SET لإدخال قيمة تحديث الحقل اثناء
التشغيل، أو في سطر الكلمة المحجوزة WHERE لتحديد السجلات التي ينطبق
عليها التحديث، كما يمكن أن تظهر في كليهما معاً.
7.2.1. استعلام التجميع (Aggregate Query)
واحد من أهم الاستعلامات الضرورية و المفيدة جداً هو استعلام
التجميع، إذ يستعمل هذا الأخير لإجراء إحصائيات، تحليل البيانات و استخلاص
معلومات مفيدة تساعد على اتخاذ القرارات السليمة، ويتيح استخدام الدوال لتجميع
البيانات.
لاستعلام التجميع الشكل العام التالي:
SELECT (Fields List), (Aggregate Functions)
FROM Table Name1
INNER JOIN Table Name2 ON Table Name1.Champs1 = Table
Name2.Champs2
WHERE (Conditions list)
GROUP BY (Fields List)
HAVING ((Aggregate Functions) Conditions)
ORDER BY (Fields List) ;
1. تستعمل الكلمة الإجبارية SELECT لتحديد الحقول (Fields List) التجميع من جدول أو مجموعة من الجداول إجبارياً مع دوال
التجميع (Aggregate Functions)،
2. تستعمل الكلمة الإجبارية FROM لتحديد تسمية الجدول Table Name1 الذي تسترجع منه الحقول المشار إليها في القائمة (Fields List) أو الحقول المستعملة في دوال التجميع (Aggregate
Functions)،
3. تستعمل الكلمة الاختيارية INNER JOIN لإضافة و ربط الجداول
خاصة في حالة كانت الحقول المراد استرجاعها و المشار إليها في القائمة (Fields List) أو الحقول المستعملة في دوال التجميع (Aggregate Functions) لا تنتمي إلى جدول واحد فقط،
4. تستعمل الكلمة الاختيارية WHERE لتحديد المعايير والشروط (Conditions List) التي يجب أن تحققها السجلات المراد استرجاعها قبل تطبيق دوال
التجميع و المشار إليها في الحقول (Fields List)،
5. تستعمل الكلمة الإجبارية GROUP BY للدلالة على حقول التجميع (Fields List) وهي نفسها تماماً التي وضعت بعد الكلمة SELECT،
6. تستعمل الكلمة الاختيارية HAVING لتحديد الشروط التي يجب
أن تحققها السجلات الناتجة بعد تطبيق دوال التجميع ((Aggregate
Functions) Conditions)،
7. تستعمل الكلمة الاختيارية ORDER BY لفرز السجلات الناتجة بعد
التجميع و ذلك بتحديد حقول الفرز (Fields List) و طريقة الترتيب
تصاعدي أو تنازلي،
8.
ينتهي الاستعلام إجباريا
بفاصلة منقوطة (;).
1.7.2.1. دوال التجميع (Aggregate Functions)
تُستخدم دوال
التجميع التي تظهر في الجدول التالي مع استعلام التجميع لحساب القيم المخزنة في
عمود واحد لمجموعة من السجلات (الصفوف) و ترجع قيمة واحدة فقط.
|
الدالة |
الوصف |
|
دالة المتوسط
(AVG()) |
تستخدم لحساب متوسط مجموعة من القيم المخزنة في عمود واحد. |
|
دالة عدد (COUNT()) |
تستخدم لحساب عدد الصفوف في عمود واحد. |
|
دالة الأول (FIRST()) |
تستخدم لإرجاع أول قيمة في عمود واحد. |
|
دالة الأخير (LAST()) |
تستخدم لإرجاع آخر قيمة في عمود واحد. |
|
دالة الأكبر (MAX()) |
تستخدم لإرجاع أكبر قيمة في عمود واحد. |
|
دالة الأصغر (MIN()) |
تستخدم لإرجاع أصغر قيمة في عمود واحد. |
|
(StDev()) |
تستخدم لتقدير الانحراف المعياري لعينة مجموع قيمها في حقل واحد. |
|
(Var()) |
تستخدم لتقدير التباين لعينة مجموع قيمها في حقل واحد. |
|
دالة المجموع (SUM()) |
تستخدم لإرجاع مجموع
القيم في عمود واحد. |
مثال:
- حساب عدد
الطلبة و مجموع رقم الأعمال حسب كل تكوين مرتبة تنازلياً حسب رقم الأعمال.
3.1. طرق إنشاء استعلام
يمكن إنشاء الاستعلام في Access بثلاث طرق مختلفة من خلال النقر على علامة التبويب "إنشاء"
(Create Tab)، ثم
النقر على أحد أيقونات مجموعة "استعلامات" (Queries).
1.3.1. معالج الاستعلام (Query Wizard)
الذي يعتبر أسهل أداة لإنشاء الاستعلامات، بحيث
يتيح ذلك للمستخدم بدون أي معرفة مسبقة بلغة الاستعلامات (SQL) و ذلك بمجرد الإجابة على مجموعة من الأسئلة المتتالية التي يحدد من خلالها نوع
الاستعلام، الجداول، الأعمدة المراد استرجاعها، عرض تفاصيل السجلات أو تجميعها،
تسمية الاستعلام وطريقة العرض (نتائج الاستعلام أو تصميم الاستعلام).
2.3.1. تصميم الاستعلام (Query Design)
الذي يعتبر أداة استعلام سهلة
الاستخدام، تتيح للمستخدمين إنشاء استعلامات عن طريق تحديد نوع الاستعلام، اختيار
أسماء الجداول والأعمدة وتحديد الشروط على البيانات التي يرغبون في استرجاعها؛ تعتبر
أداة تصميم الاستعلام أكثر قوة بسبب مرونتها على تعيين الشروط على البيانات، كما
أنها تحتوي على عرض SQL الذي يعرض سكريبت SQL من الاستعلامات التي تم إنشاؤها في تصميم الاستعلام.
3.3.1. عرض SQL (SQL Query)
الذي يعتبر أصعب الطرق لإنشاء الاستعلامات خاصة
بالنسبة للمبتدئين و المستخدمين العاديين، لأنها تتيح كتابة سكريبت الاستعلام مباشرة دون أي مساعدة و تتطلب
المعرفة و التَمكن الجيد من لغة الاستعلامات الهيكلية (SQL) و لكن يمكن العودة إلى عرض
طريقة تصميم الاستعلام (Query Design) إذا
احتجت إلى ذلك.
Commentaires
Enregistrer un commentaire