منتديات عراق وير
السلام عليكم
اهلا وسهلا بكم في منتديات عراق وير
اضغط على دخول اذا كنت مسجل
واضغط على تسجيل اذا كنت عضو جديد

منتديات عراق وير

منتديات عامة حاسوبية وهندسية مرحبا بك يا زائر في ( منتديات عراق وير )
 
الرئيسيةالبوابةاليوميةس .و .جبحـثالتسجيلدخول

شاطر | 
 

 دورة اكسس الدرس السابع

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 
كاتب الموضوعرسالة
Admin
Admin


عدد المساهمات : 168
نقاطك : 2602
التقييم : 0
تاريخ التسجيل : 11/01/2012

مُساهمةموضوع: دورة اكسس الدرس السابع   الأربعاء يناير 25, 2012 7:31 pm

دورة الأكسيس : الدرس السابع : لغة الاستعلامات الهيكلية 1


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

*** سلسلة دروس TSQL الموجودة في الموسوعة العربية أشمل من هذين الدرسين واللذين سيتم عرضهما هنا ، ولمزيد من التفصيل والتوضيح يفضل مراجعة هذه الدروسعلى هذا الرابط لمن يريد الاستزادة :

http://www.c4arab.com/showasection.php?lssid=99
لكن المطلوب منا فقط هو ما ذكر في هذه الدروس ..


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

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

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

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

أين ستكتب جمل الإستعلام في أكسيس ؟
اختر استعلامات Quires من القائمة التي كنا تختار منها Table أو Forms .
اختر Ceate Quriry In Deign Viwe .
ستظهر لك شاشة ... اختر اغلاق - Close .
والآن من قائمة Query اخترSQL Specfic ومن ثم اختر Union وذلك بالشكل التالي :

http://www.c4arab.com/images/lessons...al/cpic/44.jpg

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



لا تقلق فلسوف نشرح ماذا يعني الأمر السابق
!!!

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


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

حتى هذه اللحظة فالتغييرات محفوظة في :
http://www.c4arab.com/images/lessons/databases/general/cpic/db6.zip

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

Select Colums_Name From Table_Name;

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

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

لنلق نظرة على المثال السابق
SELECT FName FROM Tb_Main;

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

وبهذه الصورة يمكننا استخراج مواقع الأصدقاء وذلك بالشكل التالي
SELECT Site FROM Tb_Main;

وهكذا مع الباقي .
وإذا كنا نريد استخراج أكثر من عمود فيمكننا وضعهم بالتوالي وتفصل بينهم الفاصلة ، فمثلاً لاستخراج الإسم الأول والإسم الأخير :

SELECT FName,LName FROM Tb_Main;

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

SELECT FName, Age,EMail FROM Tb_Main;

ولاستخراج جميع البيانات فإننا نضع * محل اسماء الحقول وذلك بالشكل التالي :

SELECT* FROM Tb_Main;

ولاستخراج البيانات ولكن بدون تكرار نستخدم DISTINCT ... فمثلاً لاستخراج الإسم الأول مع حذف التكرار :

SELECT DISTINCT FNAme FROM Tb_Main;

أيضاً لترتيب البيانات المخرجة تصاعدياً أو تنازلياً نستخدم الأمر :
ORDER BY colum
أو للتصاعدي
ORDER BY colum DESC
فمثلاً لاستخراج جمع البيانات مع الترتيب التصاعدي حسب الإسم الأول :

SELECT * FROM Tb_Main ORDER BY FName DESC;

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

SELECT * FROM Tb_Main ORDER BY FName,Lname ;

أيضاً لاستخراج الإسم الأول تحت مسمى MyName فإننا نستخدم As وذلك بالشكل التالي :

Select Fname as MyName From Tb_Main;

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

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

SELECT Fname,Age+10 as Age2 FROM Tb_Main;

لاحظ أنك تضطر إلى اعادة تسمية الحقل الناتج وإلا فإن Access سوف يضع له اسماً من عنده .

ومثلاً لدمج الإسم الأول مع الإسم الأخير :

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

استخدام الجمل الشرطية مع أوامر الإستعلام
استخدام معامل المساواة والمعاملات الرياضية .

تأخذ صيغة استخدام المساواة كشرط في عملية الإستعلام الصيغة التالية :

Select * From Tb_Main Where Field = Value;

ويمكننا استخدام > أو < أو => أو =< أو <> وطبعاً = .
وأخيراً معاملين جدد سنشرحهم بإذن الله لاحقاً وهما Like و Between .

فمثلاً للاستعلام عن الأصدقاء الذي تساوي أعمارهم 18 سنة :

SELECT * FROM tb_Main WHERE age = 18;

ولعرض أسماء من هم أصغر من 50 سنة :

SELECT FName,LName FROM tb_Main where age < 50;

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

SELECT * FROM tb_Main WHERE Fname = 'ahmed';

كما سنضع علامتي # عند البحث عن تواريخ ، ولا توجد أمثلة لتاريخ في قاعدة البيانات ، لكنها تأخذ صيغة شبيهه بالتالي :

Select * Form Table1 Where Date > #12/03/04#;

والآن لندمج بعض ما تعملناه في جملة واحدة :
لاستخراج الإسم الأول والأخير من الجدول بترتيب تنازلياً ومدمجة سوياً تحت اسم Name والتي تحقق شرط أن العمر أكبر من 17 :

SELECT Fname & " " & Lname AS MyName FROM tb_Main WHERE age > 17 ORDER BY FNAME, LName DESC;
والآن : ماذا لو أردنا البحث بتحقيق مجموعة شروط أو أحدها أو تحقيق شرط مع انتفاء آخر ؟


من أجل هذا الغرض نستخدم المعاملات المنطقية البسيطة .


لدينا نوعين من المعاملات المنطقية البسيطة الأكثر استخداماً :
And : تعطي قيمة صحيحة True في حالة كان الطرفين صحيحاً والباقي false .
Or : تعطي قيمة صحيحة True في حالة كان أحد الطرفين صحيحاً وإلا فإنه يعطي false .



والآن إلى مثال سريع ، سنبحث عن الأشخاص الذين يكبر عمرهم عن 17 بشرط ألا يكونوا متزوجين :

Select Fname from tb_main where age > 17 and marry = false;

لنفترض أيضاً أننا نريد معرفة الأشخاص الذين تزيد أعمارهم عن 17 سنة وليس لديهم بريد الكتروني :
قبل أن تجرب المثال قم بتشغيل قاعدة البيانات وقم بحذف البريد الإلكتروني لبعض الأشخاص ، واكتب للبعض كلمة No Mail وللآخرين No .
الآن انظر الأمر التالي :

SELECT * FROM Tb_Main WHERE age>17 And (Email='No' or Email='No Mail');

سنفصل الآن هذه الجملة :
* الشرط الأول : Age > 17 : العمر أكبر من 17 .
* الشرط الثاني : Email = 'No' : البريد الإلكتروني يحتوي على كلمة No .
* الشرط الثالث : Email = 'No Mail' : البريد الإلكتروني يحتوي على كلمة No Mail .

واستخدمنا نوعين من المعاملات المنطقية And و Or .
متى تحقق الشرط الأول ( العمر أكبر من 17 ) فإنه ينتظر تحقيق أحد الشرطين الذين تدمج بينهم Or .
وعندها يعرض السجل الذي يحقق قيمة True لهذا التعبير .

قبل النهاية كن حذراً عند استخدام And مع Or في جملة واحدة ، وذلك عن طريق ترتيب الأقواس بطريقة صحيحة .

استخدام المعامل Like .

نستخدم المعامل Like للبحث عن الكلمات المشابهه لتعبير معين ...
ونستخدم للمعامل Like الصيغة التالية :

Select * From Table Where Field Like '*Name*';

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


SELECT * FROM Tb_Main WHERE FName like '*hm*';

أما لو أردنا البحث عن الأشخاص الذين تبدأ أسماءهم بحرف A لذا لن نضع * قبل كلمة البحث :

SELECT * FROM Tb_Main WHERE FName like 'A*';

ولو أردنا البحث عن الأشخاص الذين ينتهي اسمهم بحرف معين سنضع * في البداية دون النهاية .
*
في MS SQL Server نستخدم % بدلاً من * .

مما سبق نستنتج أن * تعني أي عدد من الحروف ، لكن ماذا لو أردنا تحديد عدد الحروف ؟
في هذه الحالو نستخدم "؟" والتي ذكرناها في درس البحث في البداية .

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

SELECT * FROM Tb_Main WHERE FName like 'A??';

والآن إلى مثال واقعي نسبياً . جرب تعديل حقل العنوان Address للأشخاص بحيث يحتوي على أكثر من معلومة اضافة للمدينة .
في هذه الحالة نستطيع استخراج الأشخاص الذين يسكنون مدينة واحدة عن طريق الشرط Like . هل تعرف كيف ؟؟؟

استخدام المعامل Between .

نستخدم هذا المعامل للبحث ضمن نطاق معين ، وأشهر استعمال لهذا المعامل هو استخدامه في البحث ضمن التواريخ .
يأخذ البحث باستخدام between الصيغة التالية :


SELECT colum FROM table WHERE field BETWEEN v1 AND v2;

فمثلاً لاستخراج الأشخاص الذين تترواح أعمارهم بين 20 و 60 :

SELECT *
FROM tb_main
WHERE age between 20 and 60;


ويمكن استخدام نفس الطريقة مع الأسماء ، والتواريخ بطبيعة الحال .

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://iraqware.yoo7.com
 
دورة اكسس الدرس السابع
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات عراق وير  :: قسم السوفت وير :: تعليم الاوفس office-
انتقل الى: