المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس التاسع : الجزء الأول - لغة تقنية الاستعلامات - نظرة عامة وتركيب الكود - دورة Microsoft Access 2003


khaledbelal
03-30-2010, 10:10 PM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته


ملاحظة / سيبدو الأمر مختلفاً عليك عما كنت تشاهده بالدروس الماضية.. وإذا سبق لك أن قمت ببرمجة برنامج خاص بقواعد البيانات فأعتقد أن الأمر عادي بالنسبة لك.. لنبدأ الآن بشرح القائمة الأخيرة والمهمة جداً من قوائم الآكسيس وهي الاستعلامات..


لنبدأ :

استخدام لغة ( تقنية ) الإستعلامات بطريقة TSQL .

هذا هو الجزء الأكثر اهمية ، حيث ان جمل الاستعلام تعمل مع جميع قواعد البيانات بصورة موحدة مع اختلافات طفيفة جداً ، كما سنستخدمها في فيجوال بيسك ومن خلال Asp أيضاً ، كما انها تستخدم مع غيرهما بنفس الطريقة تقريباً ، وسوف نتطرق هنا لأشهر هذه الجمل مع وجود غيرها ايضاً .

س : ما هي SQL ؟

هذه الكلمة اختصار لـ Structured Query Language .
وتصلح تقنية الاستعلام للعمل مع جميع أنواع قواعد البيانات : Oracle - Access - MS sql Server وغيرها .

تقوم هذه الجملة بالبحث - كما هو شائع - إلا أنها تستخدم أيضاً في الاضافة والحذف والتعديل وانشاء الجداول وحتى قواعد البيانات . والتحكم بها والادارة وغير ذلك .

س : أين تكتب جمل الإستعلام في أكسيس ؟ وكيف ؟

- اختر استعلاماتمن القائمة التي كنا تختار منها جداول أو نماذج...
- اختر إنشاء استعلام في طريقة عرض التصميم.. << ظللها بالفأرة ثم اضغط من الأعلى تصميم..
- ستظهر لك نافذتان واحدة (إظهار جدول).. والأخرى عن الاستعلام.. اضغط على إكس لإغلاق نافذة إظهار جدول..
- بعد أن تغلق نافذة إظهار جدول.. اتجه إلى الأعلى واختر (استعلام) ثم (خاص بـ SQL) ثم (توحيد)..

شوف الصورة للتوضيح :

http://upload.traidnt.net/upfiles/iN655594.jpg

ستظهر لك شاشة فارغة ... هذه هي الشاشة التي سنكتب فيها أوامر الإستعلام.
في أعلى الشاشة نجد رمزاً للقرص المرن وهذا الرمز يرمز إلى حفظ الإستعلام ... أيضاً علامة التعجب تعني ( نفذ الإستعلام )

الآن نأتي لكتابة أوامر الاستعلامات.. ولكن قبل ذلك يجب أن نغير عناوين الحقول من اللغة العربية إلى اللغة الانجليزية..
حتى لا نجد مشاكل عند تنفيذ الاستعلام.. عناوين الحقول فقط.. اضغط على العنوان بالفأرة مرتين سريعة.. وراح تلاقي العنوان تظلل..
ثم غير العناوين حسب التالي :
الجدول الأول (Rabia)..

الرقم = Number
الاسم الأول = FName
الاسم الأخير = LName
رقم الهاتف = Phone
العنوان = Address
البريد الالكتروني = Email
الموقع الشخصي = Site
متزوج = Marry
ملاحظات = Memo
العمر = Age

ثم اذهب إلى الجدول الثاني (Tb_R1) وغير عناوين حقوله أيضاً.. غيرها إلى التالي :

الرقم = Number
رقم البطاقة = PassPort
فصيلة الدم = BClas
مصدر البطاقة = From

ثم اذهب إلى الجدول الثالث (Tb_R2) وغير عناوين حقوله أيضاً.. غيرها إلى التالي :

المرحلة الدراسية = Year
عدد الكتب = Books
عدد الطلاب = Students


- الآن نبدأ بكتابة أول استعلام..

اكتب هذا السطر في الشاشة الفارغة السابقة.. واضغط على القرص المرن لحفظه.. ثم اختر له اسم.. ثم اضغط عليه لتشغيله..


SELECT FName FROM Rabia;

لا تقلق سوف نشرح ما يعنيه السطر السابق..

الآن اضغط على الاستعلام الذي صنعته.. أتمنى أن يكون الناتج شبيه بهذه الصورة..

http://upload.traidnt.net/upfiles/1Wu55626.jpg

الآن ظلل الاستعلام السابق واضغط من الأعلى تصميم لتعديل الاستعلام.. أو اصنع استعلام جديد بنفس الطريقة الماضية..

أو اضغط على اسم الاستعلام بزر الماوس الأيمن واختر ( عرض التصميم ) وستظهر شاشة كتابة الكود .

وبهذه الصورة ننفذ بقية أكواد الاستعلامات..

والآن سنبدأ في تفصيل جمل الاستعلام ، وسوف نتعرف أولاً على جمل البحث والتي تبدأ بـ Select.. وهذه هي الصيغة العامة لها :



Select Colums_Name From Table_Name;

شرح الكود :

نلاحظ تكون جملة الإستعلام من أربعة أجزاء :

Select : وهي التي تميز جملة البحث عن غيرها من جمل TSQL
Colum_Name : اسم الحقل أو العمود الذي تريد له أن يظهر
From : وهي أيضاً صيغة خاصة بجملة البحث وتتغير في باقي جملTSQL
Table_Name : هنا نكتب اسم الجدول


دعنا نلق نظرة سريعة على ما يمكن تسميته (القواعد النحوية) Syntex :

* لا يوجد أي فرق بين الأحرف الكبيرة والصغيرة .
* مسافة = مسافتان = عشرة أسطر : لا يعترف بأكثر من مسافة .
* تنتهي جميع جمل الإستعلام بفاصلة منقوطة ( ؛ ) إلا أننا في الفيجوال بيسك وفي بعض البرامج الأخرى لا نحتاج إليها .

ملاحظة على النقطة الأخيرة /الفاصلة المنقوطة مهمة في بعض لغات البرمجة مثل PHP وإن لم تضعها فسعطيك البرنامج خطأ ولن يتم التنفيذ.. ولكن من سهولة برنامج آكسيس أننا إذا لم نضعها فإن البرنامج يساعدنا ويضعها عند التنفيذ..
إذا وجدنا فرصة للكلام عن البرمجة فسنتكلم عن أهمية الفاصلة المنقوطة بصورة أوسع..

الآن دعنا نرجع قليلاً ونلقي نظرة على السطر الأول (الاستعلام) الذي وضعناه :


SELECT FName FROM Rabia;

لاحظ أننا استخدمنا جملة Select لاستخراج الاسم الأول من الجدول Rabia

وبهذه الصورة يمكننا استخراج بقية الحقول التي نريدها من الجدول..
مثال : لإستخراج مواقع الأصدقاء.. سيكون الكود بالشكل التالي :


SELECT Site FROM Rabia;

وهكذا مع البقية..

س : ماذا لو كنا نريد استخراج أكثر من عمود..؟؟
الجواب : بكل بساطة نضع أسماء الحقول التي نريدها على التوالي ونفصل بينهم بفاصلة عادية (،)..

مثال : لاستخراج الإسم الأول والإسم الأخير..


SELECT FName,LName FROM Rabia;

وهكذا إذا كنا نريد إستخراج أكثر من حقل..



س : ماذا لو كنا نريد استخراج جميع البيانات الموجودة في جدول Rabia..؟؟
لاستخراج جميع بيانات أي جدول فإننا نضع العلامة ( * ) محل اسماء الحقول.. وعلامة الضرب هذي في أغلب لغات البرمجة تعني الكل..

مثال : لإستخراج جميع بيانات الجدول Rabia :


SELECT * FROM Rabia;

وهكذا مع بقية الجداول الموجودة في القاعدة..

س : ماذا لو كنا نريد استخراج بيانات أحد الحقول ولكن بدون تكرار البيانات المتشابهة ؟؟
لاستخراج البيانات بدون تكرار نستخدم الأمر (DISTINCT) .. فمثلاً لاستخراج الإسم الأول مع حذف التكرار.. قم بتكرار أحد الأسماء ونفذ التالي :


SELECT DISTINCT FNAme FROM Rabia;

ستجد أنه لو تشابهة بعض الأسامي فإنه يظهر الأول ويهمل البقية..

س : ماذا لو كانا نريد ترتيب البيانات المخرجة تصاعدياً أو تنازلياً ؟؟

بكل بساطة نستخدم الأمرين التاليين :

ORDER BY colum : للترتيب التصاعدي
ORDER BY colum DESC : للترتيب التنازلي

بحيث (colum) : هو اسم الحقل..

مثال :لاستخراج جميع البيانات مع الترتيب التنازلي حسب الإسم الأول..



SELECT * FROM Rabia ORDER BY FName DESC;

ويمكننا عمل مستويين للترتيب - كما هو شائع - وذلك باستخدام الفاصلة العادية (،) فمثلاً للترتيب حسب الإسم الأول ومن ثم حسب الإسم الأخير ولكن تصاعدياً هذه المرة :


SELECT * FROM Rabia ORDER BY FName,Lname;

- أيضاً يمكننا صناعة الحقول.. وذلك باستخدام الأمر (As)..
مثال :إنتاج حقل باسم MyName ووضع بيانات حقل الاسم الأول Fname فيه :


Select Fname as MyName From Rabia;

وسنستفيد من As لاحقاً في عمليات الاستعلام باستخدام الدوال .

يمكننا أيضاً اجراء العمليات البسيطة على جمل البحث ، فمثلاً لاستخراج أعمار الأصدقاء بزيادة عشر سنوات نستخدم التالي :


SELECT Fname,Age+10 as Age2 FROM Rabia;

لاحظ أن أعمار الأشخاص زادت 10 سنوات لكل عمر وتلك هي القيمة التي وضعتها أنت..
لاحظ أيضاً أن عنوان الحقل ليس Age وإنما Age2 وهو اسم حقل جديد قام الاستعلام بتكوينه بواسطة الأمر As بعد أن وضعته أنت له.. وإن لم تضعه فإن Access سوف يضع له اسماً من عنده..

ويمكننا أيضاً دمج الحقول وذلك بالصورة التالية :

مثال : لدمج حقل الاسم الأول مع الاسم الأخير..


SELECT Fname+ " " + LName As CName FROM Rabia;

نفذ الاستعلام السابق وستجد حقل باسم CName موجود فيه الاسم الأول والاسم الأخير..
بعد أن دمجناهم بعلامات الزائد والفراغ الموجود بينهم..

ويجب أن تلاحظ أن جميع الأمثلة التي استخدمنا فيها الأمر (As).. يتضح منها أن وظيفة هذا الأمر هو خاص بأسماء الحقول فقط..






نكتفي بهذا القدر.. وسنواصل بالدرس القادم بإذن الله..

تم بحمد الله.. ونلتقي بالدرس القادم إن شاء الله..


تحياتي : أبو ربيع

----------------------

المصدر (http://www.gryati.com/vb/showthread.php?t=14384)