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

 
الرئيسيةالرئيسية  بوابة الغماراببوابة الغماراب  أحدث الصورأحدث الصور  التسجيلالتسجيل  دخولدخول  

 

 قواعد البيانات

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


الجوزاء عدد المساهمات : 229
تاريخ التسجيل : 26/02/2012
العمر : 43
الموقع : الجموعيه / الغماراب

قواعد البيانات Empty
مُساهمةموضوع: قواعد البيانات   قواعد البيانات Emptyالسبت 20 يوليو 2013, 10:20 am

[rtl]قواعد البيانات[/rtl]
[rtl]تهدف هذه الدورة إلى تعليمك أسس قواعد البيانات العلائقية Relashional Data Bases وكيفية التحكم بها عن طريق لغة SQL البسيطة، تمكنك لغة SQL من إدارة قواعد البيانات بشكل كامل وإجراء جميع العمليات القياسية كإنشاء الجداول وتعبئتها بالبيانات، أو إجراء الاستعلامات عليها وكذلك الربط بين الجداول المختلفة، ولكن ما هي قاعدة البيانات؟ وما هي فائدتها ومكوناتها ؟ وكيف يمكننا عمل ذلك بها ؟ [/rtl]
[rtl]كما يشير اسمها قاعدة البيانات عبارة عن مكان أو مستودع كبير لتخزين البيانات المختلفة، تريحك قاعدة البيانات من عناء تخزين بياناتك في ملفات منفصلة وكيف أنك تحتاج إلى إجراء عمليات البحث والتصنيف لهذه البيانات عن طريق خوارزميات البحث المعقدة بأن تعطيك واجهة سهلة للتعامل مع البيانات، بحيث لا تحتاج إلى كل هذا. [/rtl]
[rtl]تكون البيانات في قاعدة البيانات مخزنة في عدة جداول Tables وكما نعلم فالجدول يتكون من صفوف Rows وأعمدة Coloumns هكذا : [/rtl]
قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002
قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002
قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002
قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002
قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003قواعد البيانات C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002
[rtl]الجدول السابق يتكون من خمسة صفوف وثلاثة أعمدة، وفي قواعد البيانات فإننا نسمي الصفوف بالسجلات Records ونسمي الأعمدة بالحقول Fields، فما هي الحقول وما هي السجلات ؟ [/rtl]
[rtl]يقوم الحقل الواحد في الجدول بتخزين معلومة معينة، فمثلا عندما يكون لدينا قاعدة بيانات بأرقام الهواتف فإننا سنحتاج إلى حقلين ( أو عامودين ) واحد للاسم والثاني لرقم الهاتف، أما السجلات ( أو الصفوف ) فيحتوي كل منها على مجموعة من الحقول، فترى بأن السجل الواحد في مثالنا يحتوي على معلومتين مختلفتين هما الاسم ورقم الهاتف. [/rtl]
[rtl]لذلك يمكننا القول بأن قاعدة البيانات تتكون من الجداول والجداول تتكون من السجلات والسجلات تتكون من الحقول، وكل حقل يحتوي على معلومة واحدة، أي أن الحقل هو أصغر وحدة في قاعدة البيانات، أنظر إلى المثال التالي : [/rtl]
الاسم
رقم الهاتف
جاسم سالم عبد الله1231234
محمد سعيد صالح1112232
راشد جمال عيسى1212132
كمال أحمد خليفة1122335
[rtl]كما هي واضح في الأعلى، كل معلومة توضع في حقل وكل الحقول التي بجانب بعضها البعض أفقيا تشكل سجلات ومجموع السجلات يشكل الجدول والعديد من الجداول تشكل قاعدة البيانات. [/rtl]
 
 
[rtl]لغة SQL[/rtl]
[rtl]لا بد أنك قد لاحظت الآن أن هنالك الكثير من العمليات التي تستطيع قاعدة البيانات أدائها، فيمكنها أن تنشأ سجلا أو تحذف سجلات أو تعدل سجلا أو تغير جدولا أو تحذف جدولا وغيرها الكثير، هذه العمليات تجرى بواسطة لغة SQL وهي اختصار لعبارة Structured Query Language أي لغة الاستعلامات البنيوية، تسمى كل عملية تنفذ عن طريق لغة SQL بالاستعلام Query، وعلى حسب لغة البرمجة التي تستخدمها وبرنامج قواعد البيانات الذي تستخدمه فإن الاستعلامات ترسل وتنفذ بطرق مختلفة وكيفية الحصول على نتائج الاستعلام تختلف أيضا، في هذه الدورة لن يهمنا كيف تقوم بإرسال الإستعلام إلى قاعدة البيانات وتنفذه وتحصل على نتائجه، ولكن ما سنتحدث عنه هو كيفية كتابة الاستعلام نفسه، لغة SQL شبه متفق عليها بين جميع نظم قواعد البيانات، على سبيل المثال في موقعنا نستخدم لغة البرمجة PHP للوصول إلى مزود قاعدة البيانات MySQL، وهي من التوليفات الشهيرة، ومنها أيضا استخدام برنامج Visual Basic للوصول إلى مزود قاعدة بيانات Microsoft SQL Server لعمل البرامج التي تتطلب وصولا إلى بيانات مركزية كما في المحلات والأسواق والمخازن والمستشفيات وغيرها، ويمكن استخدام لغة SQL أيضا عن طريق البرامج المكتوبة بلغة C و C++ و Perl و Delphi للوصول إلى بيانات مخزنة في قواعد بيانات Oracle و Sybase و Informix و IBM/DB2 و Access وغيرها. [/rtl]
[rtl]مزودات قواعد البيانات[/rtl]
[rtl]من الطرق الشهيرة لتخزين قواعد البيانات هي وضعها في صورة ملفات نصية بسيطة Plain Text، بحيث يوضع كل سجل في سطر من أسطر الملف ويفصل بين الحقول المختلفة في كل سجل بفاصلة comma ( , )، وتكون أحيانا في صورة ملفات أكثر تعقيدا بحيث يحتوي الملف على الكثير من الجدوال والفهارس التي تسرع عمليات البحث في قواعد البيانات والاستعلامات الجاهزة والنماذج كما في قواعد بيانات Microsoft Access. [/rtl]
[rtl]هذه الطريقة قد تعتبر جيدة في البرامج البسيطة ولكن في بيئات الشبكات المعقدة والبرامج التي تحتاج وصولا مشتركا إلى البيانات تصبح هذه الفكرة صعبة التطبيق حيث أن ملف البيانات يكون في جهاز المزود، ويتم الوصول إليه عبر الشبكة من قبل الزبون، وفي حالة الملفات الثابته يجب أن يتم نقل ملف البيانات بأكمله عبر الشبكة حتى يصل إلى الزبون الذي يأخذ المعلومات منه وإذا قام الزبون بتغيير أي من المعلومات فإن المزود يجب أن ينتظر حتى يقوم الزبون بإعادة الملف بعد عمل التغييرات عليه، وهذا أمر يستغرق الكثير من الوقت خاصة إذا كان حجم الملف كبيرا وكانت الشبكة بطيئة، وكذلك إذا أراد أكثر من شخص الوصول إلى البيانات في نفس الوقت وتغييرها في نفس الوقت سيؤدي ذلك إلى عطب البيانات وحدوث خلل فيها، لهذا فإن المزود يقوم بإعطاء الملف لمن يطلبه أولا ويقوم بقفل الملف بحيث يجب على كل من يطلب الملف بعد ذلك أن ينتظهر حتى ينتهي هذا الشخص من الملف، وبعدها الذي يليه وهكذا، وهو أمر غير معقول أبدا! [/rtl]
[rtl]الحل لهذه المشكلة كان بعمل ما يسمى بمزود SQL، يقوم مزود SQL باستقبال جميع الأوامر والطلبات في صورة استعلامات SQL ثم يقوم بتنفيذ هذه العمليات على المزود ويرسل نتيجة التنفيذ فقط إلى الزبون دون الحاجة إلى إرسال قاعدة البيانات بأكملها، فإذا أردت أن تحصل على حقل واحد فقط من أحد السجلات في أحد الجداول في قاعدة البيانات فإن الجزء الذي سيتم إرساله عبر الشبكة هو الطلب في صورة SQL والجزء الذي سيتم إعادته عبر الشبكة هو هذا الحقل فقط والذي قد لا يصل في حجمه إلى 10 بايتات مثلا إذا كان مكونه من 10 أحرف، مقارنة مع عملية إرسال قاعدة البيانات بأكملها والتي قد يصل حجمها إلى العديد من الميجابايتات وربما الجيجابايتات في بعض الأحيان، إضافة إلى ذلك فإن مزود SQL يقوم يقوم بتوزيع الأعباء على الطلبات بشكل رائع عندما يكون هنالك أكثر من طلب في نفس الوقت.

[/rtl]
 
[rtl]العبارة SELECT[/rtl]
[rtl]يمكنك الحصول على البيانات في صورة سجلات باستخدام لغة SQL وذلك عن طريق العبارة SELECT والتي تأخذ الشكل العام التالي : [/rtl]
[ltr]SELECT fields FROM tables; [/ltr]
[rtl]حيث أن fields هي أسماء الحقول وtables هي أسماء الجداول التي نريد أن نحصل على الحقول منها، فإذا كان لدينا الجدول التالي في قاعدة البيانات على سبيل المثال : [/rtl]
[ltr]Directory Table[/ltr]
[ltr]Name[/ltr]
[ltr]Telephone[/ltr]
[ltr]John[/ltr][ltr]1291233[/ltr]
[ltr]Tim[/ltr][ltr]1682340[/ltr]
[ltr]Jim[/ltr][ltr]2462466[/ltr]
[ltr]Dill[/ltr][ltr]3636778[/ltr]
[rtl]إذا أردنا أن نحصل على الحقلين Name و Telephone في الجدول السابق فإن العبارة التي سنستخدمها هي :
[/rtl]
الكود:
SELECT name,telephone FROM directory;
[rtl]والعبارة السابقة تعيد الجدول كما هو في الأعلى بالضبط، ولكن ماذا لو كتبنا كلمة telephone قبل كلمة name في عبارة SQL السابقة فتصبح كالتالي :
[/rtl]
الكود:
SELECT telephone,name FROM directory;
[rtl]عند تنفيذ العبارة السابقة سنحصل على الجدول التالي : [/rtl]
[ltr]telephone,name[/ltr]
[ltr]Telephone[/ltr]
[ltr]Name[/ltr]
[ltr]1291233[/ltr][ltr]John[/ltr]
[ltr]1682340[/ltr][ltr]Tim[/ltr]
[ltr]2462466[/ltr][ltr]Jim[/ltr]
[ltr]3636778[/ltr][ltr]Dill[/ltr]
[rtl]أما إذا كتبنا العبارة كالتالي :
[/rtl]
الكود:
SELECT
name,telephone,name FROM directory;
[rtl]فسنحصل على النتيجة التالية : [/rtl]
[ltr]name,telephone,name[/ltr]
[ltr]Name[/ltr]
[ltr]Telephone[/ltr]
[ltr]Name[/ltr]
[ltr]John[/ltr][ltr]1291233[/ltr][ltr]John[/ltr]
[ltr]Tim[/ltr][ltr]1682340[/ltr][ltr]Tim[/ltr]
[ltr]Jim[/ltr][ltr]2462466[/ltr][ltr]Jim[/ltr]
[ltr]Dill[/ltr][ltr]3636778[/ltr][ltr]Dill[/ltr]
[rtl]وماذا لو قمنا بتنفيذ العبارة التالية :
[/rtl]
الكود:
SELECT
name FROM directory;
[rtl]فالناتج سيكون كالتالي : [/rtl]
[ltr]name[/ltr]
[ltr]Name[/ltr]
[ltr]John[/ltr]
[ltr]Tim[/ltr]
[ltr]Jim[/ltr]
[ltr]Dill[/ltr]
[rtl]كما تلاحظ ليست هنالك أية قواعد ثابته، فلا يمكنك أن تقول بأن الحقل name هو الحقل الأول في الجدول، أنت من يحدد الآن ما هو الحقل الأول وما هو الحقل الثاني وهكذا. [/rtl]
[rtl]قد تحتاج في بعض الأحيان أن تعرض جميع الحقول في الجدول، فيمكنك استخدام علامة النجمة ( * ) في مكان الحقول للحصول على جميع الحقول التي في الجدول، فاستخدام العبارة التالية سيعيد الجدول بأكمله كما كتبناه أول مرة :
[/rtl]
الكود:
SELECT * FROM directory;
[rtl]قواعد اللغة[/rtl]
[rtl]عند كتابتك لاستعلامات SQL يجب أن تتذكر الأمور التالية دائما : [/rtl]

  • لغة SQL لا تفرق بين الحروف الكبيرة والصغيرة فلا فرق بين كتابة الكلمة SELECT والكلمة select والكلمة SeLeCt وكلها تعامل بنفس الطريقة، قد تكون هنالك بعض الاستثناءات في أسماء الجداول أو الحقول، يجب أن تراجع دليل الاستخدام المرفق مع برنامج قاعدة البيانات الذي تستخدمه للتأكد من ذلك.
  • المسافات البيضاء ليس لها اعتبار في لغة SQL، فيمكنك وضع أي قدر تريد من المسافات البيضاء لتنسيق استعلاماتك، فيمكنك مثلا أن تكتب الاستعلام في الصورة التالية، ولا توجد أية مشكلة في ذلك :

[rtl][b style="mso-ansi-font-weight:normal"]·                [/b]SELECT        *[/rtl]
[rtl][b style="mso-ansi-font-weight:normal"]·                [/b]FROM directory;[/rtl]

  • تنتهي جميع الاستعلامات بالفاصلة المنقوطة ( ; ).
  • العبارات النصية التي لا تعتبر جزءا من عبارات الاستعلامات توضع بين قوسي اقتباس مفردين ويتيح بعض برامج قواعد البيانات استخدام أقواس الاقتباس المزودجة أيضا ( " .. " ).
  • إذا كنت تريد استخدام علامات الاقتباس كجزء من النص الذي تريد إدخاله إلى قاعدة البيانات فإنك تضع قبلها علامة الشرطة الخلفية لتصبح هكذا ( \' ) أو في بعض برامج قواعد البيانات فيتم ذلك بمضاعفة علامة الاقتباس ( '' )، فمثلا إذا أردت وضع العبارة التالية في قاعدة البيانات :
    الكود:
    I'm me



[rtl]فإنك تكتبها في أحد الصور التالية حسب برنامج قاعدة البيانات الذي تستخدمه : [/rtl]
[rtl]'I\'m me'[/rtl]
[rtl]'I''m me'[/rtl]

========================================

 
[rtl]الشروط[/rtl]
[rtl]يمكنك أثناء جلب السجلات أن تضع شروطا معينة للسجلات التي تريد الحصول عليها بواسطة العبارة SELECT وذلك باستخدام المقطع WHERE وبعده تضع الشروط التي تريدها، أنظر مثلا :
[/rtl]
الكود:
SELECT telephone FROM directory WHERE name='Tim';
[rtl]فإن ناتج تنفيذ الاستعلام السابق سيكون كالتالي : [/rtl]
[ltr]name='Tim'[/ltr]
[ltr]telephone[/ltr]
[ltr]1682340[/ltr]
[rtl]حيث أن هنالك حقلا واحد فقط يطابق الشرط، والشرط هو أن يكون الاسم name يساوي Tim ولأن كلمة Tim جزء من البيانات المخزنة في قاعدة البيانات فإننا نحيطها بعلامات الاقتباس المفردة، لاحظ أيضا أن البرنامج لن يعيد الاسم أيضا ضمن النتائج وذلك لأننا لم نطلب الاسم في عبارتنا، ويمكننا الحصول على الاسم أيضا باستخدام هذه العبارة :
[/rtl]
الكود:
SELECT telephone, name FROM directory WHERE
name='Tim';
[rtl]كما تلاحظ فإن عبارة SELECT من بدايتها وحتى ما قبل كلمة WHERE تعمل كما شرحنا في السابق بالضبط. [/rtl]
[rtl]الجزء الذي يهمنا الآن في العبارة هو الجزء الذي يأتي بعد الكلمة WHERE أو ما يسمى بالشرط condition، تتكون عبارة الشرط الواحدة من ثلاثة أجزاء، الجزء الأول هو الطرف الأيسر من العبارة والجزء الثاني هو الطرف الأيمن من العبارة والجزء الثالث هو المعامل الذي يقع بين الطرفين، والمعامل في مثالنا السابق هو علامة المساواة ( = ) حيث أن شرطنا هو أن يكون الطرف الأيمن يساوي الطرف الأيسر حتى يتحقق الشرط : [/rtl]
[ltr]leftside[/ltr]
[ltr]operator[/ltr]
[ltr]rightside[/ltr]
[ltr]name[/ltr]
[ltr]=[/ltr]
[ltr]'Tim'[/ltr]
[rtl]والعوامل المستخدمة في الشروط مختلفة، أهما ما يلي : [/rtl]
[ltr]معاملات الاختبار في SQL[/ltr]
[ltr]المعامل[/ltr]
[ltr]اسمه[/ltr]
[ltr]=[/ltr][ltr]يساوي[/ltr]
[ltr][/ltr][ltr]أكبر من[/ltr]
[ltr][/ltr][ltr]أصغر من[/ltr]
[ltr]<=[/ltr][ltr]أكبر من أو يساوي[/ltr]
[ltr]>=[/ltr][ltr]أصغر من أو يساوي[/ltr]
[ltr]<> [/ltr][ltr]لا يساوي[/ltr]
[ltr]LIKE[/ltr][ltr]يشبه[/ltr]
[rtl]العامل الأول هو عامل المساواة وهو يتحقق عندما يكون الطرف الأيمن والأيسر متساويان، كما رأينا في المثال السابق، العوامل التالية تبدو واضحة وهي > ويتحقق عندما يكون الطرف الأيسر أكبر من الطرف الأيمن، < ويتحقق عندما يكون الطرف الأيمن أصغر من الطرف الأيسر، وبعدها أكبر من أو يساوي ثم أصغر من أو يساوي. [/rtl]
[rtl]أما المعامل السادس <> فيعني لا يساوي ويتحقق الشرط فيه عندما يكون الطرف الأيمن لا يساوي الطرف الأيسر. [/rtl]
[rtl]قد تبدو مقارنة النصوص باستخدام العوامل < و > غريبة نوعا ما، فكيف نقول مثلا بأن 'Tim' < 'Jim' ؟ الأمر في غاية البساطة، كل ما عليك فعله هو أن تتخيل بأنك تريد أن ترتب هذا الجدول تنازليا فهذا يعني بأن القيم العليا تكون فوق والقيم الدنيا تكون في أسفل الترتيب، ولهذا فإن 'z' > 'a' تعتبر عبارة صحيحة. [/rtl]
[rtl]العامل الأخير من عوامل المقارنه هو العامل LIKE ( يشبه ) وهو يستخدم لمقارنة النصوص عادة، ويتحقق الشرط فيه عندما يكون الطرف الأيمن يشبه الطرف الأيسر، ويكتب طرفها الأيمن في صورة نص يحتوي على علامات النسبة المؤوية ( % ) وهي تعني ( أي شيء ) بمعني أنك إذا قلت :
[/rtl]
الكود:
SELECT name,telephone FROM directory WHERE name LIKE
'%m';
[rtl]فهذا يعني بأن الاسم يجب أن يكون ( أي شيء ) ثم الحرف 'm'، أو بمعنى آخر سيكون الشرط متحققا في السجلات التي ينتهي الاسم فيها بالحرف 'm'، وإذا كتبنا :
[/rtl]
الكود:
SELECT
name,telephone FROM directory WHERE name LIKE 'm%';
[rtl]فهذا يعني m ثم ( أي شيء ) أي أنها تطابق حقول name التي تبدأ بالحرف m، حسنا ماذا لو قلنا :
[/rtl]
الكود:
SELECT
name,telephone FROM directory WHERE name LIKE '%m%';
[rtl]أما هذه فتعني ( أي شيء ) ثم الحرف m ثم ( أي شيء ) أي أنها ستطابق جميع السجلات التي يحتوي الحقل name فيها على الحرف m. [/rtl]
[rtl]يمكنك أن تقيس على ذلك الكثير من الأمور، فيمكنك أن تبحث في قاعدة البيانات عن حقل يبدأ بكلمة 'this' وبعدها بعدة أحرف أو كلمات أو ( أي شيء ) تأتي كلمة 'one' فتكتب هكذا :
[/rtl]
الكود:
text LIKE 'this%one%'
[rtl]دعنا نجرب تطبيق هذا الاستعلام على قاعدة البيانات التي نعمل عليها :
[/rtl]
الكود:
SELECT name,telephone FROM directory WHERE
name LIKE '%m';
[rtl]فإن النتائج ستكون كالتالي : [/rtl]
[ltr]name LIKE '%m'[/ltr]
[ltr]Name[/ltr]
[ltr]Telephone[/ltr]
[ltr]Tim[/ltr][ltr]1682340[/ltr]
[ltr]Jim[/ltr][ltr]2462466[/ltr]
[rtl]استخدام أكثر من شرط[/rtl]
[rtl]يمكنك استخدام أكثر من شرط واحد عن جلب سجلات بياناتك، فيمكنك مثلا أن تبحث عن جميع الحقول التي يبدأ اسم صاحبها بالحرف J والحرف D، أو ربما تريد البحث عن جميع الأشخاص الذين تاريخ ميلادهم أكبر من 1 يناير 2000 وأصغر من 5 فبراير 2000 وهكذا أمور، يمكنك أن تربط بين الشروط باستخدام أداتين مختلفتين للربط هما AND و OR، وهاتان الأداتان تساويان && و || على التوالي في بعض لغات البرمجة. [/rtl]
[rtl]الأداة الأولى ومن اسمها AND ( و ) تجعل السجل محققا للشرط عندما يتحقق الشرط الذي على يمينها والشرط الذي على يسارها معا، فمثلا عندما نقول : [/rtl]
[rtl]SELECT name,telephone FROM directory WHERE[/rtl]
[rtl]name LIKE '%m' AND telephone > 20000000;[/rtl]
[rtl]ويعني ذلك بأن السجلات الوحيدة التي سيتم عرضها هي التي يتحقق فيها كل من الشرطان معا، فتكون name تنتهي بالحرف m ورقم الهاتف أكبر من 20000000، فهي تعيد السجل الوحيد الذي يحقق الشرطان كالتالي : [/rtl]
[ltr]name LIKE '%m' AND telephone > 20000000[/ltr]
[ltr]Name[/ltr]
[ltr]Telephone[/ltr]
[ltr]Jim[/ltr][ltr]2462466[/ltr]
[rtl]أما OR ( أو ) فيكفي لتحققها أن يتحقق أحد الشرطان فقط، فإذا قلنا : [/rtl]
[rtl]SELECT name,telephone FROM directory WHERE[/rtl]
[rtl]name LIKE '%m' OR telephone > 20000000;[/rtl]
[rtl]فإن جميع الحقول التي ينتهي فيها الحقل name بالحرف m بالإضافة إلى جميع الحقول التي يكون فيها الحقل telephone أكبر من 20000000، أي أنها تعيد جميع الحقول التي تحقق الشرط الأول، وجميع الحقول التي تحقق الشرط الثاني وجميع الحقول التي تحقق الشرطان معا، ولذلك فإن ناتج تنفيذ العبارة هو ثلاثة سجلات كالتالي : [/rtl]
[ltr]name LIKE '%m' OR telephone > 20000000[/ltr]
[ltr]Name[/ltr]
[ltr]Telephone[/ltr]
[ltr]Jim[/ltr][ltr]2462466[/ltr]
[ltr]Tim[/ltr][ltr]1682340[/ltr]
[ltr]Dill[/ltr][ltr]3636778[/ltr]
[rtl]كما تلاحظ، السجل الأول Tim كان من ضمن السجلات التي حققت الشرطان معا فكان من ضمن جدول النتائج، أما السجل الثاني Jim فلم يحقق الشرط الثاني وكان الحقل telephone فيه أقل من 20000000 إلا أنه كان من ضمن جدول النتائج لأنه حقق الشرط الأول وهذا كاف، والسجل الثالث Dill حقق الشرط الثاني ولم يحقق الأول حيث أنه لا ينتهي بالحرف m. [/rtl]
[rtl]استخدام OR و AND معا[/rtl]
[rtl]يمكنك ربط أكثر من شرط باستخدام أكثر من أداة ربط ولأكثر من مرة، فيمكنك أن تقول مثلا : [/rtl]
[rtl]SELECT name,telephone FROM directory WHERE[/rtl]
[rtl]telephone > 20000000 OR telephone = 30000000 AND name LIKE '%m';[/rtl]
[rtl]العبارة السابقة تنطوي على حيلة ما، قد يبدو لك في الوهلة الأولى أن العبارة تقوم بمطابقة جميع السجلات التي يكون الحقل name فيها ينتهي بالحرف m وفي نفس الوقت يكون رقم الهاتف فيها أكبر من 20000000 أو يكون يساوي 30000000، ولكن الواقع يختلف عن ذلك، عندما يكون هنالك أكثر من أداة ربط، ويكون هنالك أكثر من شرطين، فإن برنامج قاعدة البيانات سيقوم بتنفيذ أداة الربط AND أولا حسب ترتيبها بالجملة، وبعد ذلك يقوم بربط الجمل التي تستخدم الأداة OR. [/rtl]
[rtl]يعني ذلك بأنه في العبارة السابقة الأداة AND تربط شرطان هما telephone = 30000000 و name LIKE '%m' أما الأداة OR فتربط شرطان هما telephone > 20000000 و telephone = 30000000 AND name LIKE '%m'، ونقول هنا بأن AND لها أولوية التنفيذ حيث قامت بربط الشروط التي على جانبيها، وأصبح شرطا واحدا وبعد ذلك يبدأ عمل الأداة
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://gamarap.yoo7.com
 
قواعد البيانات
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» الدورة الكاملة لتعلم برنامج قواعد البيانات (Access) ... حصريا
» قواعد بيانات Microsoft Access

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
مــــــــــنتدى الغمـــــــــــــــــــــاراب :: منتدى التقنية والتكنولوجيا :: قسـم البرامج-
انتقل الى: