صفحة 3 من 12 الأولىالأولى 12345678 ... الأخيرةالأخيرة
النتائج 31 إلى 45 من 169

الموضوع: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

  1. #31
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    - العلاقة "ادارة" بين المشروع والقسم :

    انظر الصورة 344



    مانوع العلاقة ؟

    واحد لمتعدد ومتعدد لواحد , القسم الواحد يتحكم او يدير اكثر من مشروع .. والمشروع الواحد يدار من قسم واحد بسسسسسسسس .... يعني المفتاح الاجنبي في جدول المشاريع .

    الصورة 354



    يوجد صفة مشتركة ؟

    لا



    - علاقة "العمل" بين الموظف والمشروع : الصورة 364




    نوع العلاقة متعدد لمتعدد !!

    اوبس !! مالعمل ؟؟... اين نضع المفتاح الاجنبي ؟؟ مين يذكرني ؟

    الحل هو الجدول التقاطعي (هل تذكرت فكرة هذا الجدول؟) , ونسميه Proj_Emp table

    هل يوجد صفة مشتركة ؟

    نعم يوجد .. وهذه الصفة نضعها في ... الجدول Proj_Emp

    والان لاحظ حقول الجدول Proj_Emp الصورة 374

    المفتاح الرئيسي لهذا الجدول هو رقم الموظف ورقم المشروع معا !!
    وهذه المسئلة لحسن الحظ لا يوجد ذلك المدير اللكدة حمزة ..(اللكدة= الغثة = معقد الامور)
    حيث بامكانك تضيف حقل وتجعله مفتاح اساسي .. ومثلا تسميه ماشئت مثلا ...Proj_emp_no او أي اسم اخر ,, ^^
    انتهينا من العلاقات ...
    هل تذكر منذ زمن بعيد في العصر الحجري تقريبا .... لما قلت لك اترك كيان الموظف رسمي , وكيان الموظف الذي يعمل بعدد الساعات ؟؟
    مممم ... ذاكرتك قوية ^^ ... اذن يا صاحب الذاكرة ... فضلتها في الدرس القادم اشرحها ^^ لانه صراحة المسئلة هذه .. لم تمر علي قط , والمنهج العربي الذي استمد منه الدروس اعتبره قديم جدا , وسيء للغاية , ولكن يفي بالغرض ... في بعض الاحيان .
    اعتقد انني سوف ابحث عن مناهج اخرى , وليست عربية . هذا المنهج سيء للغاية عن هذه المسئلة .
    بامكاني ان اسرد ما ذكره المنهج , ولكن فضلت انني أقف هنا على اساس انني ابحث في تصميم قواعد البيانات الحديثة ... فترقبوا ^^

    التحديات :

    اتحداك ان تحل احد هذه التحديات او كلها
    :
    التحدي الاول : لماذا المفتاح الاجنبي لا يكون خاليا ؟؟

    التحدي الثاني : مارأيك ... لماذا انا اقترحت عليك ان تضع المفتاح الاجنبي في جدول الاقسام ؟؟ وما رأيك انت ؟

    المهام : اريد منك ثلاث مهام تعملها ....
    - قرائة الدرس .

    - قرائة الدرس .

    - قرائة الدرس .

    انتـــــــــــهى الدرس الرابـــــــــع

  2. #32
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    الدرس الخامس :مفاهيم قواعد البيانات ..


    السلام عليكم
    بداية الدرس الخامس ... انني لست من سوف يشرحه ... بل .. احد السادة في احد المواقع ..
    في هذا الدرس ... سوف تسرد لكم مفاهيم قواعد البيانات الهامة , وبعدها تخش قليلا في العميق , هناك رجل يدعى بـ InternetMaster .... والله يا ناس اسم على مسمى ,,,

    كان يعطي في احد المنتديات مفاهيم وخبرة عشرين سنة .... صراحة اعجبت بطريقته واعجبت بتشويقه واعجبت بعلمه و اصراره .....

    ستجد كل شي ... عن كلامه .. وجميع الحقوق محفوظة لانترنت ماستر .... فجزاه الله الف الف خير ....صحيح انه لم يكمل دورته .... ولكن صحح الكثير من المفاهيم الخاطئة .. بطريقة عجيبة جدا ....

    هذا الرابط .. اذا اردت ان تقرأ كل مقالاته

    http://www.arabteam2000-forum.com/index.php?showtopic=35237&st=0

    فهو الدرس الخامس .... واجبرك ان تقرأ جميع كتاباته المتعلقة بـقواعد البيانات ....

    3 ساعات كفيلة بان تنسخ خبرة 20 سنة !!! ..... فكر فيها .... هل تضيع 10 سنوات او 20 سنة ؟؟ ام 3 ساعات ..؟؟

    الخيار لك !!!

    لقد تطرق الى لغة الـHTML ... ولست مطالب بذلك ,,,

    ولقد تطرق الى جمل الـ SQL اقرأها بشكل سريع لاني سوف اشرحها بشكل كافي ووافي ... فلا تخف ^^
    اهم شي .. في دروس جمل الـ SQL هي ان تعرف معنى استعلام !!


    ايضا تطرق الى الاكسس .... فحاول ان لا تطبق معه لاننا هنا اوراكل ^^ ...... ولان البعض لا يعرف الاكسس جيدا

    لا تطبق ... ولكن تخيل اوكيه ^^

    سوف يتطرق الى قوانين قواعد البيانات والى تماسكها ....

    هل تذكر التحدي ... مالذي ينتج من جعل المفتاح الاجنبي فارغ ؟ ستجد حله في هذه المقالات ....



    توقع ان الدرس السادس .. امثلة لتصميم قواعد البيانات ....
    والدرس السابع هو بداية لغة الـ SQL , اوكيه ؟؟
    يالله سلااام ,,

  3. #33
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    السلام عليكم ,,,
















    "احدهم" ارسل لي التحديات , اشكره على حلها , وصراحة وجدت عنده خطأ بسيط في مفهوم الكيانات الاساسية .. والكيانات الفرعية .

    قلنا ان الكيان اذا كان يوجد منه اكثر من نوع متشابهين.. ولكن مختلفين في الصفات .. فاننا نقسم هذا الكيان بعدد الانواع









































    لاحظ هذا النموذج وهو الذي ارسله "احدهم
    " , قسم كيان القسم الى ثلاث انواع !!!



    المشكلة ان الانواع الثلاثة .. صفاتها متشابهة , أي يوجد تكرار

    قسم كيان الموظف الى نوعين , الفترة الصباحية والفترة المسائية ,

    المشكلة تكمن في ان النوعين متشابهين تماما في الصفات .. ليش التكرار ؟

    انا اقترح عليك يا "احدهم" مايلي :


























    انا قسمت الموظف الى قسمين .. موظف يعمل بالساعات
    H-Employee وموظف رسمي براتب ثابت S_Employee












    شايف اقتراحي كيف جعلت الصفات المتشابهه في الكيان "الموظف " ؟ والصفات المختلفة والتي هي "الراتب الثابت
    Salary" و "الراتب بنسب الساعات hour_rate_salary"












    هل فهمت احد اخطائك ؟



    شايف الصفات ذو اللون الاحمر ؟










    The_interval .. أي الفترة ..



    يمكن ان تكن صباحية او مسائية

    انا جعلتها صفة للكيان موظف .. افضل من ان اجعله كيان فرعي صح ؟ لا يوجد الان تكرار ^^

    شايف الصفة الحمراء الثانية ؟











    Dept_name ... صفة للكيان قسم ..



    يعني اسم القسم .. ممكن يكون حسابات , او صيانة , او علاقات ....... الخ

    ولا يوجد تكرار ولا هم يحزنون ...

    وصلت ^^ ؟؟
























    حاولت يا "احدهم" واخطأت , والان تستفيد من خطأك ان شاء الله .. راسلني اذا لم تفهم .. سوف اعيد واعيد واعيد ,,, انا من النوع الذي لا يمل الاجوبة ^^ .. صدقني



    شكرا لك يا "احدهم" على ارسال التحديات جميعها .. شكرا لك ^^

    يا سادة .. تالله لن تفهمو طالما لايوجد تمرس + قرائة + رغبة

    حلو الواجبات والتحديات ,, حلوها يا بشر ,,
















  4. #34
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    Cool مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    السلام عليكم ...
    سأضطر الغياب لمدة اقل من اسبوع ...
    فا .... المعذرة << سفر
    وعلى فكرة .. كنت ناوي انتهي من الدورة لمدة شهرين ..
    بس ... ما بتشجعو ... على طرح المواضيع بسرعة ..
    فالافضل .. لي ولكم .. عدم الاسراع ..
    وانا حسوي تكنيك .. قوي جدا .. لتعليمكم من الصفر الى اللانهائية ^^ ..
    والقاعدة رقم اثنين تقول ....
    "تعلم كل شي .. او لا تتعلم "
    لذا ... حأجعلكم تعملو .. مشروع يفيدكم ..
    وسأجعلكم ان شاء الله تتعلمون البرمجة .. حتى ولو لم تتعلمو سطرا واحدا فيها ,,,
    تتتتتتتررررررقبوووووووو
    التعديل الأخير تم بواسطة The Coder ; 11-12-2005 الساعة 10:57 AM

  5. #35
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    السلام عليكم
    احدهم ارسل لي هذه الرسالة :

    "شكرا لك أخي درسك هذا كان رائع و طريقتك في الطرح تعجبتني جدا لكن الموضوع بدأ يصعب شوية فالنموذج كان كبيييييير و يتووووه .
    و على فكرة أنت قلت أن وضع المفتاح الأجنبي في جدول الموظفين لن يجربه أحد ، لكن أنا جربته لا تكن بهذا التشاؤم ! "

    وارد عليه واقول .. لم يجرب غيرك يا "احدهم " ^^ .... ولم يرسل لي احد التحديات الا انت وأخر فقط ...
    وانا اعرف متى اتشائم .. ومتى اتفائل ^^ ,,,, لا تخف علي ^^

    ومن ناحية ... ان النموذج كبير ويتوه ..
    قصدت ذلك .. وكنت ناوي اضع نموذج اعقد واعقد ... لكي تتدرب بشكل قاسي وقوي ..
    وتواجه اي نموذج تجده امامك في المستقبل .. مهما بلغت صعوبته ,,,

    شكرا لك يا "احدهم" ... وشكرا لكم ^^

  6. #36
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    الدرس السادس
    السلام عليكم ,,,

    هذا الدرس ..اعتبره من اهم الدروس .. ويشكل احد الاعمدة الاربعة التي نتكيء عليها في منهجنا هذه ...

    ومن ناحية البرنامج الخاص بلغة الـ SQL فسوف اشرحه لاحقا ... لذا اريدك ان تفهم الدرس بدونه الان ,,,,
    توقع انني لن اكثر عليك تحديات في هذا الدرس ... اعرف انك سعيد بهذا ,,,


    بسم الله الرحمن الرحيم
    اسم الدرس : لغة الاستعلامات
    SQL
    نوع الدرس : تطبيقي + فكري

    صعوبة الدرس : *** من *****

    اهميــة الدرس : ****** من ***** (
    Over)
    الوقت المتوقع منك لفهم الدرس :
    8 ساعات (ساعتين فهم و 6 ساعات تطبيق )

    متطلبات تتوفر فيك : التطبيق


    المتوقع منك في هذا الدرس :

    - اتقان جزء كبير من هذه اللغة 100 %
    هيا لنؤركل ^^

    * لغة الاستعلامات (او الاستفسارات) والتي تدعى بـ
    SQL :
    احب ان اشير الى قاعدة مهمة ... وهي القاعدة رقم 3

    (البيانات + معالجة = معلومات)

    وكما عرفت في الدرس الخامس .. هذه القاعدة , لذا يفترض انك تعرف مالبيانات .. ومالمعلومات ..

    ولماذا البيانات .. ولماذا المعلومات . وما هي اصلا المعالجة , ولماذا نحصل على المعلومات ..

    اعرف ان ثلاث ارباعكم ما قرأوا ولا بيعرفوا الاجوبة ....

    لكن ... الله المستعان ,,,

    اذا لم تقرأ الدرس الخامس ... اذهب ولا تقرأ ....

    SQL
    تعني Structured Query Language أي لغة الاستفسارات وهي لغة برمجة قواعد البيانات ....
    وعلى قول انترنت ماستر (الدرس الخـامس) مايلي : (ما بين القوسين كلامي انا )
    " Query تعني إستعلام إستفسار إستفهام إستنباط إستنبطاااح ---- وصلت الفكرة؟؟؟

    السؤال البديهي والتقليدي هو ما الفرق بين الجدول والإستعلام؟


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

    الجدول هيكل خرساني شديد التماسك والتكامل يعمل مع بقية الجداول مع محافظته على إستقلاله وشخصيته. الجدول هو رجل ببدلة رسمية منتصب الطول عابس الوجه لا يمزح ويسير في الشارع بجدية مفرطة وإلتزام كبير.

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

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

    لأن السيد
    Codd مزق حقولنا ووزعها في جداول مختلفة كان لا بد من طريقة ما لتجميع هذه الحقول مع بعضها البعض !!!
    (تفتكرون ليش قسمنا الجداول ... وتفتكرون ليش طلعت حاجة اسمها المفتاح الاجنبي ... )
    الجدول هو الإستعلام، والإستعلام هو الجدول !! مع مرونة عالية جدا جدا جدا في كيفية تشكيل الإستعلام.
    (الاستعلام ينتج لنا جدول ... يعني حيصير جدول بس بالطريقة الي احنا نبيها
    .... )
    SQL
    هي لغة تستخدم علم (المصفوفات) من الرياضيات للوصول إلى الحلول --- ولا يهمك حقيقة ماذا تستخدم ولكن للعلم بالشىء فقط لمحبي هذا العلم الرائع المسمى المصفوفات Matrices ومفردها مصفوفة Matrix
    .

    الغريب في
    SQL
    أنها عميقة الجذور وفي غاية التعقيد الشديد جدا، ولكن الممتع في الموضوع أن كامل اللغة بكل أبعادها تتكون من أقل من 10 أوامر -- صدق أولا تصدق أو حتى أقل من 5 أوامر على ما أذكر !!!

    قلنا أن
    SQL
    تمزح من الجهة اليمين --- وتغضب من الجهة اليسار، ما معنى هذا؟

    هناك إستخدامين إثنين فقط للغة
    SQL
    واحد أسميه مزاح من اليمين والآخر مزاح من اليسار:

    الإستخدام الأول (مزاح من اليمين): هو الحصول على البيانات بأي شكل وبأي كيفية (لكي ينتج البيانات التي طلبناها على شكل جدول )
    الإستخدام الثني (مزاح من اليسار) : هو تحديث
    Skeleton او الهيكل الخرساني لقاعدة البيانات أي تغيير وتعديلالجداول والحقول والروابط ---- اااووو خطير جدا !!!


    "



    ويضيف "
    النوع الثاني من المزاح ينقسم إلى شقين:

    الأول: تعديل في البيانات داخل الجداول
    " في السجلات"
    -- وينبغي الحذر
    الثاني: تعديل في الجداول والحقول والروابط بينها --- وهو الخطير -- وينبغي الحذر الشديد جدا

    تعدل بيانات الجداول يتم من خلال:
    إضافة سجلات جديدة
    تعديل سجلات موجودة
    حذف سجلات موجودة


    "



    انتهى كلامه ......

    اضيف انا انه في تعديل الجداول والحقول والروابط بينها ... يعني مثل اضافة عمود او حذفه او تعديل اسمه ..

    اضافة جدول او حذفه او تعديله ... اضافة علاقة ...... الخ

    اذن ... لغة الـ
    SQL تلعب في الجداول لعب .... ولها غرضين ,, غرض استفسار عن معلومات ... يعني نطلب عرض معلومات ,, وغرض تعديل بيانات وتعديل تركيب الجدول .


    افهم جيدا .. اذا لم تقم بتركيب الاوراكل .... دبر نفسك .... حمله .. ركبه .. اشتريه .. اسرقه ... يجب ان تمتلك أي اصدار من الاوراكل
    .. لجمل الـ SQL .. أي اصدار .. قديم حديث لا يهم الان .... دبر نفسك فيما بعد في الاصدارات ,,,

    الان سوف اعرض عليك تكنيك قوي جدا جدا جدا ....

    وهو ان ... تقرأ ... وتطبق على الورق وتستنتج ... ثم
    ........................ تطبق على الحاسب ....

    التطبيق على الحاسب اجعله اخر ما تفكر فيه الان
    ...


    * اقسام لغة الـ
    SQL :
    خمس اقسام فقط .... حنأخذها بتعمق ... طبعا انا لا اعرف ترجمتها معنويا ..لكن حاولت ذلك ...

    نحفظها انجليزي ونفهم عملها .. ركز في المصطلح الانجليزي ,,,,

    1- استرجاع البيانات (
    Data Retrieval) :
    تخص الاستعلام عن البيانات من جدول ما ....

    مثلا الموظف احمد يبي يعرض جميع الموظفين الي راتبهم اقل من 7500 ريال سعودي (7500 ريال سعودي = 2000 دولار امريكي ... وذلك بقسمة 3.75 .... )

    فين وصلنا ؟؟ ايه ايه ... احمد يبي يعرض على الشاشة جميع الموظفين الي راتبهم اقل من 7500 ريال ... ايش يعمل ؟

    على طول ... يدخل احد اوامر الاستعلام واسترجاع البيانات ,,

    2- لغة التلاعب بالبيانات (
    Data Manipulation Language) اختصارها DML
    وهي تخص بتعديل , حذف , او اضافة البيانات والسجلات في جدول ما .... (المزاح من اليسار ^^)

    ممم .. احمد (نفس ذلك الموظف المغلوب على امره ) كان يفكر في البزورة وام العيال , وهو يفكر .. استخدم امر الاضافة و ادخل قيمة 9000 ريال في سجل المدير حمزة ...

    في اخر الشهر لما استلم المدير الراتب ... جن جنونه .. ناقص من راتبه 9000 ريال ....

    راح لاحمد .. وخذ سب وشتم انواع ....

    احمد الان يريد ان يعدل هالمعلومة الخطأ في الجدول .... يعمل ايش ؟

    يستخدم امر التعديل ....

    3- لغة تعريف البيانات (
    Data Definition Language) اختصارها DDL
    وهي التي تخص بتعديل , حذف او اضافة وانشاء الجداول وخصائصها (الاعمدة) وعلاقاتها
    ..
    احمد (نفس ذلك الموظف .. بس في اليوم الثاني ) استخدم احد اوامر
    DDL وهو امر انشاء جدول جديد , بعد ما انشئه ماعجبه اسم عمود .. واستخدم احد اوامر الـ DDL وهو امر خاص بتعديل اسم عمود , لو يبي يحذف الجدول كله .... يستخدم امر خاص لحذف الجدول .


    4- التحكم بالعمليات (
    Transaction Control)
    هذه خاصة بتثبيت وحفظ العمليات ... يعني لو مثلا (مجرد مثال) عدل احمد اسم جدول الموظف الى "الموظفين"
    ... ويبي يقفل الجهاز , لازم يستخدم امر خاص بحفظ هذه العملية ...
    .. ندم احمد انه غير اسم الجدول .... ويبي يتراجع عن هذه العملية (قبل ما يكفشه المدير) وش يعمل ؟

    على طول ... يستخدم امر التراجع ... ولا من شاف .. ولا من دري (صراحة ... من الممكن ان المدير عامل برنامج تجسس يعني يعرف حماقات احمد من "طقطق"
    الى"سلام عليكم " لذا انتبهوا ^^ .. سوف نبرمج هذا البرنامج فيما بعد )


    5- لغة التحكم بالبيانات (
    Data Control Language) اختصارها DCL
    خاصة بالصلاحيات .. يعني لو مثلا طنت في راس المدير الغثة (حمزة) في اخر الليل ... انه ما يبي احمد (الموظف المسكين) يعدل على الجدول الموظفين ... ولا يبي اصلا يعطيه صلاحية الوصول الى هذا الجدول , اش يسوي المدير ؟؟

    يقوم بدري في الصبح .. قبل ما يجي المسكين احمد .... ويستخدم احد اوامر الـ
    DCL ,, ويلغي صلاحية المسكين للوصول الى الجدول ... فهمت ؟؟؟




    سوف اركز كثيرا على الاختصارات .... لذا احفظها جيدا

    اعرف انك تبي تقتلني عشان المصطلحات هذه ... ولكن تحمل قليلا ^^"
    لن اشرح الان البرنامج المستخدم لتنفيذ جمل الـ
    SQL لذا حاول تفهم الان بدونه .

  7. #37
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    القسم الاول ( ( Data Retrieval :







    في استرجاع البيانات .. نستخدم امر واحد .. وهو الأمر Select









    اذا لم يكن لديك برنامج SQL Plus فلا بأس ... انا سوف اشرح الان على اساس انك لا تملكه الان ...







    سوف نتخيل ان لدينا هذا البرنامج ...






    الان تخيل انه لدينا جدول الموظفين EMP ... وبه الحقول التالية الصورة (16):







    Empno هو رقم الموظف (مفتاح اساسي)



    Ename هو اسم الموظف







    Job هو وظيفة الموظف







    MGR هو رقم مدير الموظف







    Hiredate هو تاريخ توظيف الموظف







    Sal راتب الموظف الاساسي







    Comm الزيادات .. أي الرواتب الاضافية على الراتب الاساسي sal


    Deptno رقم القسم الذي يعمل فيه ... (مفتاح اجبي (مفتاج غريب) )

    الان تخيل انه ممتليء بهذه البيانات :









    كود:
     
    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
     
    ------ ---------- --------- ---------- -------- ---------- ---------- ----------
     
    7369 SMITH CLERK 7902 17/12/80 800 20
     
    7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30
     
    7521 WARD SALESMAN 7698 22/02/81 1250 500 30
     
    7566 JONES MANAGER 7839 02/04/81 2975 20
     
    7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30
     
    7698 BLAKE MANAGER 7839 01/05/81 2850 30
     
    7782 CLARK MANAGER 7839 09/06/81 2450 10
     
    7788 SCOTT ANALYST 7566 19/04/87 3000 20
     
    7839 KING PRESIDENT 17/11/81 5000 10
     
    7844 TURNER SALESMAN 7698 08/09/81 1500 0 30
     
    7876 ADAMS CLERK 7788 23/05/87 1100 20
     
    7900 JAMES CLERK 7698 03/12/81 950 30
     
    7902 FORD ANALYST 7566 03/12/81 3000 20
     
    7934 MILLER CLERK 7782 23/01/82 1300 10

    وتخيل انه لدينا جدول الاقسام DEPT وبه الحقول التالية (الصورة 26) :











    Deptno رقم القسم (مفتاح اساسي)




    Dname اسم القسم (او نوعه)







    Loc موقع هذا القسم














    تخيل ان به هذه البيانات :









    كود:
     
    DEPTNO DNAME LOC
     
    ------ -------------- ---------
     
    10 ACCOUNTING NEW YORK
     
    20 RESEARCH DALLAS
     
    30 SALES CHICAGO
     
    40 OPERATIONS BOSTON


    الان انظر هذا التركيب البسيط للامر Select
    كود:
     Select * from dept ;


    معنى هذا السطر هو ....





    Select = اختر


    * = جميع الحقول






    From = من







    Dept = الجدول dept






    اختر جميع الحقول من الجدول dept
    ؟؟


    لاحظ الفاصلة المنقوطة ( في آخرالأمر ..... ومعناه نفذ الجملة ...

    لو كتبنا الأمر السابق وضغطنا Enter






    سوف ينتج لنا مايلي (بافتراض أن جدول الأقسام به هذه السجلات أصلا ) :
    كود:
     
    
     
    DEPTNO DNAME LOC
     
    ------ -------------- ---------
     
    10 ACCOUNTING NEW YORK
     
    20 RESEARCH DALLAS
     
    30 SALES CHICAGO
     
    40 OPERATIONS BOSTON





    ممممم.. عرض جميع السجلات الموجودة بهذا الجدول

    نجرب الان هذا الامر ...






    كود:
     SELECT * FROM EMP ;


    مالذي تغير ؟؟
    وضعت اسم جدول اخر .... وهو جدول الموظفين وكأني اقول اختر جميع حقول الجدول EMP






    وضعت جميع الحروف capital وليست small؟؟ هل تتوقع ان هذا خطأ ؟؟ لحسن الحظ انه ليس من الخطأ فعل ذلك















    بعد ضغط زر الـEnter هل ستعرف مالذي سيعرض لنا ؟؟ شاهد ....
    كود:
     
    
     
    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
     
    ------ ---------- --------- ---------- -------- ---------- ---------- ----------
     
    7369 SMITH CLERK 7902 17/12/80 800 20
     
    7499 ALLEN SALESMAN 7698 20/02/81 1600 300 30
     
    7521 WARD SALESMAN 7698 22/02/81 1250 500 30
     
    7566 JONES MANAGER 7839 02/04/81 2975 20
     
    7654 MARTIN SALESMAN 7698 28/09/81 1250 1400 30
     
    7698 BLAKE MANAGER 7839 01/05/81 2850 30
     
    7782 CLARK MANAGER 7839 09/06/81 2450 10
     
    7788 SCOTT ANALYST 7566 19/04/87 3000 20
     
    7839 KING PRESIDENT 17/11/81 5000 10
     
    7844 TURNER SALESMAN 7698 08/09/81 1500 0 30
     
    7876 ADAMS CLERK 7788 23/05/87 1100 20
     
    7900 JAMES CLERK 7698 03/12/81 950 30
     
    7902 FORD ANALYST 7566 03/12/81 3000 20
     
    7934 MILLER CLERK 7782 23/01/82 1300 10


    عرض جميع السجلات الموجودة بالجدول الخاص بالموظفين ...
    جرب الان هذا الامر ...






    كود:
     SeLeCt * FrOm EmP ;



    سوف تعرض نفس النتيجة السابقة ... أي ان لغة الـ SQL ليست حساسة من ناحية الاحرف ,,,
    طيب ... اريد ان اعرض رواتب (Salary) الموظفين جميعهم ... كيف ؟






    كود:
     Select sal from emp ;



    ونتيجة التنفيذ هي :





    كود:
     SAL
    كود:
     
    ----
     
    800
     
    1600
     
    1250
     
    2975
     
    1250
     
    2850
     
    2450
     
    3000
     
    5000
     
    1500
     
    1100
     
    950
     
    3000
     
    1300





    اوبس ... ظهر عمود الرواتب فقط ؟؟؟ مالذي حدث بالضبط ؟






    كود:
     Select sal from emp;



    معنى هذا الامر هو اعرض لي القيم في العمود sal من الجدول emp




    طيب .. اريد عرض عمودي الرواتب والاسماء الخاصة بالموظفين ؟؟






    كود:
     Select sal,ename from emp ;


    كود:
    SAL ENAME
    ---- ------
     
    800 SMITH
     
    1600 ALLEN
     
    1250 WARD
     
    2975 JONES
     
    1250 MARTIN
     
    2850 BLAKE
     
    2450 CLARK
     
    3000 SCOTT
     
    5000 KING
     
    1500 TURNER
     
    1100 ADAMS
     
    950 JAMES
     
    3000 FORD
     
    1300 MILLER


    عرض لي سجلات العمودين الرواتب و الاسماء الخاصة بالموظفين





    .....







    مممممم ... علامة النجمة تعني "كل الاعمدة " ,,


    طيب لو كتبنا الامر السابق بهذه الصيغة ..
    كود:
     
    Select * 
     
    From emp
     
    ;


    وضغطنا Enter .... فسوف ينفذها من دون أي مشاكل ... يعني انه لا مشكلة من تجزئة وضع الامر ^^ الى عدة اسطر ... بل بالعكس , تجزئة الامر الى عدة سطور يسهل علينا الفهم اكثر ... سوف تلاحظ في الامثلة القادمة هذا الشيء .







    - اريد ان اعرض جميع بيانات الموظف الذي يدعى بـ KING







    اليك الامر :
    كود:
     
    Select * from emp 
     
    Where ename ='KING' 
     
    ;


    Where أي عندما يكون او الذي...













    يعني اعرض لي بيانات جميع الحقول للموظف الذي اسمه = King







    اضفنا الشرط .... where ename='KING'







    سوف يعرض معلومات الموظف كنق فقط :


    كود:
     
    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
     
    ------ ---------- --------- ---------- -------- ---------- ---------- ----------
     
    7839 KING PRESIDENT 17/11/81 5000 10


    ممممم جميل جدا ,,,
    نستطيع التحكم في عدد الاعمدة , وفي السجلات التي نريد عرضها .

    اذا اردنا عرض راتب الموظف King مالذي نعمله ؟

    كود:
    Select sal from emp 
     
    Where ename='KING' ;


    سوف يعرض :








    كود:
     SAL
    كود:
     
    -----
     
    5000





    اوبس ... أين اسم الموظف KING ؟؟ لقد كتبنا اسمه في الامر ..!! لماذا لم يعرض اسمه ؟؟

    في الأمر السابق .. نحن قلنا اعرض الراتب فقط ... عندما يكون اسم الموظف King






    بدأت الأمور تتعقد ... وبدأ في وجهك احمرار الغضب والغيظ مني ,,


    اعذرني ... أنا سادي قليلا في شرح الأمور (سادي = هو الذي يتلذذ بالتعذيب )






    سوف اعقد لكالآنالأمورأكثروأكثر ....







    الان مارأيك في الامر التالي :


    كود:
    Select * from emp 
     
    Where ename ='king';


    مالذي تتوقع من هذا الامر ... تخيل انك الان ضغطت Enter ... فسوف يعرض لك هذه النتيجة :








    كود:
    no rows selected







    ومعناها ... لاتوجد صفوف مختارة ؟؟


    أي لا توجد سجلات للعرض ؟؟

    أي لا توجد بيانات للموظف الذي يدعى بـ king






    أي لايوجد اصلا موظف يدعى بـ king







    قبل قليل ... عرفنا انه يوجد موظف يدعى KING







    ونحن قلنا انه KING او king لا مشكلة ...


    لماذا ظهرت هنا مشكلة ؟؟

    الم نقل ان لغة SQL ليست حساسة لحالة الاحرف ؟














    في الحقيقة ان لغة الـ SQL ليست حساسة لحالة الاحرف .. ولكن في قواعد البيانات ... في جدول الموظفين تحديدا خزنا اسم الموظف بـ KING ... وليس king !!







    فرق بين البيانات المخزنة في الجدول وبين اوامر الـ SQL فهذه في وادي والاخرى في وادي اخر ...


    ان الحاسب جهاز غبي جدا ... ولا يملك الحس الانساني طبعا , ولا يعرف ان KING هو نفسه king






    طيب ... هذه تعتبر مشكلة .. بل مصيبة ...


    سوف تعرف حلها لاحقا

    - اريد ان اعرض الراتب الاساسي ورقم واسم الموظف KING مارأيك ؟؟
    كود:
    Select empno , ename , sal from emp 
     
    Where ename = 'KING' ;

    سوف يعرض لنا هذا الناتج
    كود:
    EMPNO ENAME SAL
     
    ------ ---------- ----------
     
    7839 KING 5000





    جميل جدا ...
    الان .. مارأيك بالامر التالي :
    كود:
     
    select * from emp 
     
    where ename="KING";


    مالذي سوف يحدث ؟؟ سوف تعرض لك مشكلة ...

    كود:
    ORA-00904: "KING": invalid identifier





    لماذا ؟؟ مالمشكلة ؟؟ هل لاحظت تغيرا عن الأوامر السابقة ؟؟

    بدل 'KING' وضعنا "KING"






    ممممم .. يعني انه يجب ان تكون علامة تنصيص الاحادية...







    هيا ... لنجرب معا هذه العلامة التنصيص الاحادية ...


    اريد ان اعرض الان بيانات الموظف الذي رقمه 7521 ... الامر كالتالي :
    كود:
    Select * from emp 
     
    Where empno ='7521' 
     
    ;

    والناتج سوف يكون ..
    كود:
     
    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
     
    ------ ---------- --------- ---------- -------- ---------- ---------- ----------
     
    7521 WARD SALESMAN 7698 22/02/81 1250 500 30

    طيب .. جرب هذا الامر :

    كود:
    Select * from emp 
     
    Where empno = 7521 
     
    ;


    لقد حذفنا علامة التنصيص الاحادية ... وسوف يعرض لنا نفس النتيجة السابقة ...
    لماذا نستخدم علامة التنصيص اذن ؟؟

    جرب هذا الامر ... بعد نزع علامة التنصيص الاحادية :

    كود:
    Select * from emp 
     
    Where ename=KING
     
    ;

    سوف يعرض لك هذا الخطأ
    كود:
    ORA-00904: "KING": invalid identifier


    ممممم ..




    استنتاج : يجب استخدام علامة التنصيص الاحادية مع الحقول (حقول=أعمدة=صفات) التي من نوع الاحرف ....ولا يوجد أي خطأ اذا استخدمناها مع الأرقامأو حذفناها .... ^^ وصلت ؟؟























  8. #38
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    - عرض الحقول باسماء مستعارة :





    مممم .. المدير حمزة (نفس ذاك المدير) يريد تعقيد الامور على الموظف احمد (نفس ذاك الموظف المسكين)

    يريد عرض هذه النتيجة .... ويريد من احمد استنتاج الامر ..

    النتيجة :
    كود:
     
    SALARY THE_NAME
     
    ------- --------
     
    1250 WARD
     
    1250 MARTIN




    من الجدول Emp !!!


    احمد يقول انه لا توجد حقول بالمسميات SALARY و THE_NAME ؟؟


    كيف ظهرت هذه المسميات ؟؟؟؟

    احمد يعرف جيدا انه انعرض رواتب و اسماء الموظفين والذين رواتبهم = 1250

    ولكن لا يعرف هذه المسميات من الحقول

    اليك الحل يا احمد ....

    بامكانك يا احمد ... ان تسمي الحقول ما شئت في العرض فقط ... لم تفهم ؟؟

    طيب ...
    كود:
    select sal SALARY , ename THE_NAME from emp
     
    where sal = 1250;

    مارأيك ؟؟
    قلنا اعرض الحقل sal وسميه salary (لاحظ المسافة بين sal و salary)






    واعرض الحقل ename وسميه the_name (لاحظ المسافة بين اسم الحقل وتسميته)


    برافو يا احمد ... حللتها يا احمد ...

    مطط المدير شعره .. حقدن وحنقن على احمد ... يريد تعجيزه باي طريقة ..

    يقول المدير انه يريد اسم الحقل sal بهذا الاسم "salary" .. وليس "SALARY"






    ويريد ename بـهذا الاسم "the_name" ... وليس "THE_NAME"







    واحمد ماشاء الله عليه .... ذكي وفهمها على الطاير واقترح الامر التالي :

    كود:
     
    select sal salary , ename the_name from emp
     
    where sal = 1250;


    وظهرت النتيجة التالية :
    كود:
    SALARY THE_NAME
     
    ------ --------
     
    1250 WARD
     
    1250 MARTIN





    اوبس .. لم يجدي نفعا ؟؟
    مالعمل ؟ كل شيء يتحول الى احرف كبيرة (Capital) ؟؟

    اليك الحل يا سيدي ,,
    كود:
    select sal "salary" , ename "the_name" from emp
     
    where sal = 1250;


    والناتج :

    كود:
    salary the_name
     
    ------- ---------
     
    1250 WARD
     
    1250 MARTIN





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

    لما كنت ادرسها منذ زمن ...كان اكثر شيء يعقدني ... علامات التنصيص ..

    فمرة اقول ان علامة التنصيص الاحادية للعناوين .. والثنائية للمتغيرات الحرفية (القيم النصية كما فعلنا في اسم الموظف KING)....






    ومرة اقول العكس ...






    انتبه جيدا ... الثنائية للعناوين .. والاحادية للقيم النصية






    انظر جيدا ... لهذا المثال :
    كود:
    select sal "SaLaRy Of ThIs eMpLoYeE" from emp
     
    where sal=1250;


    شكلنا من الحروف الكبيرة والصغيرة ... ووضعناها في علامة التنصيص باسم مستعار للعمود sal


    سوف يكون الناتج مايلي :

    كود:
    SaLaRy Of ThIs eMpLoYeE
     
    -----------------------
     
    1250
     
    1250

    كما توقعنا ... ظهر بنفس الصيغة التي اردناها ,,, لاحظ وجود مسافات ... وهي لم تضر بشيء .. ولا مشكلة فيها .. انما المشكلة لو لم يكن هناك علامة التنصيص .. فيجب ان لا تضع مسافات في التسمية ,,
    انظر هذا المثال الاخير :
    كود:
     
    Select ename as "Name" , sal as salary , deptno department_number
     
    From emp 
     
    Where deptno=30;



    كود:
    Name SALARY DEPARTMENT_NUMBER
    ---------- ---------- -----------------
     
    ALLEN 1600 30
     
    WARD 1250 30
     
    MARTIN 1250 30
     
    BLAKE 2850 30
     
    TURNER 1500 30
     
    JAMES 950 30





    ممممم ... زدنا كلمة as ... وهي كلمة زائدة في عرض الأسماء المستعارة ... سواء وضعناها .. او لم نضعها .. لا فرق ....( لماذا عرضتها في هذا المثال )؟؟ لكي لا تتفاجأ اذا شاهدتها في احد الكتب .. وتقول أنني لم أطلعك عليها ^^ .. بس



    - عرض العمليات الحسابية :

    انتبه
    !!! توجد نقاط مهمة جدا ..... يجب عدم اغفالها ,,,

    نريد عرض رواتب الموظفين الشهرية بالقسم رقم 30 ... ونريد عرض رواتبهم السنوية .... مالذي نعمله ؟

    اولا كيف نوجد الرواتب السنوية ؟

    12 * الراتب الشهري = الراتب السنوي
    (annual salary ) ...
    معادلة بسيطة ....

    نحن نملك حقل خاص بالرواتب الشهرية .. صح ؟ وهو الحقل
    sal
    ولكن لا نملك حقل خاص بالرواتب السنوية ...

    هل تذكر في تصميم نموذج
    ER .. الصفات المشتقة ؟

    وهي الصفات التي يمكننا ان نوجدها من صفات أخرى للكيان ...

    مثل المعدل , او الربح السنوي ... او ماشابه ,,

    قلنا ان لا تضع الصفات المشتقة كحقل في الجدول صح ؟

    في القاعدة رقم واحد والتي تنص على "على حسب المتطلبات نعمل النظام او نبرمجه او حتى نصممه
    "
    لو كانت المتطلبات في نظام الموظفين .. إيجاد الراتب السنوي (وهو صفة مشتقة.. ونوجدها من الصفة "الراتب"
    ) ... مالذي سوف يحصل ؟

    لدينا خيارين لا ثالث لهما ..

    اما ان نجعله حقل في الجدول بالرغم انه صفة مشتقة ...

    أو اما ان نهمله , ولا نجعله حقل في الجدول
    , وفي الاستفسار نوجده ...

    لماذا الخيار الأول .. ولماذا الخيار الثاني ؟؟

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

    تخيل معي هذا الامر .. اعرف انه لا يوجد حقل باسم الراتب السنوي (
    annual salary ) ولكن تخيل انه يوجد هذا الحقل ,,,

    كود:
     Select annual_sal ,sal from emp where ename='KING';

    والناتج :
    كود:
       
    
    
    
    SAL ANNUAL_SAL
    
    ---- ----------
    
    5000 60000
    كل ما حصل هو اننا حصلنا على معلومة ثابتة من جدول الموظفين ...
    لو ان راتب الموظف
    king زاد ... مثلا صار 5500 دولار .. فما العمل .. هل يبقى الراتب السنوي 60000 ؟؟

    سوف نضطر الى تعديله هو الاخر .. وندخل القيمة
    66000 ...

    هذا اذا وضعناه كحقل جاهز في الجدول ...

    اذا لم نضعه حقل ... كيف نوجده ..؟؟؟ أنا
    أخبركالآن ..
    كود:
     select sal , 12*sal from emp ;


    وسوف يكون الناتج .. مايلي :
    كود:
       
    SAL 12*SAL
    
    ------ ----------
    
    800 9600
    
    1600 19200
    
    1250 15000
    
    2975 35700
    
    1250 15000
    
    2850 34200
    
    2450 29400
    
    3000 36000
    
    5000 60000
    
    1500 18000
    
    1100 13200
    
    950 11400
    
    3000 36000
    
    1300 15600

    لاحظ العملية الحسابية .... أين عملناها ؟ في نفس الاستعلام ,,,

    يا
    سلام .. لغة مرنة بشكل كبير , سواء اضفنا ضرب .. قسمة .. جمع .. طرح .. فسوف تنفذها ,,,

    كل ما عملناه هو ... اننا قلنا
    sal*12 فقط .. وهو بشكل أوتوماتيكي .. عرف انها عملية حسابية ,,

    الان دعنا نتفنن قليلا ونغير مسمى الحقل باسم مستعار ..

    كود:
     select sal , 12*sal as "Annual_Salary" from emp ;
    انظر الى الناتج الان ,,
    كود:
       
    SAL Annual_Salary
    
    ----- -------------
    
    800 9600
    
    1600 19200
    
    1250 15000
    
    2975 35700
    
    1250 15000
    
    2850 34200
    
    2450 29400
    
    3000 36000
    
    5000 60000
    
    1500 18000
    
    1100 13200
    
    950 11400
    
    3000 36000
    
    1300 15600


    هل تذكر الحقل comm ؟؟؟ وهو الخاص بالرواتب الاضافية ... بعض الموظفين لديهم رواتب اضافية والبعض الاخر لا يملك رواتب اضافية .. الموظف MARTIN .. لديه زيادة 1400 دولار .. مارأيك لو نحسب راتبه الاجمالي .. والراتب السنوي الاجمالي ؟؟ هل تعرف ؟؟
    كود:
       
    Select sal+comm "salary" , (sal+comm)*12 "annual_sal"
    
    from emp 
    
    where ename='MARTIN' ;


    سوف ينتج لدينا ...

    كود:
       
    salary annual_sal
    
    ------- ----------
    
    2650 31800
    معقدة قليلا هاه ؟؟ لماذا اضفنا الاقوس ؟؟انسى امر الاقواس الان .. وركز في sal+comm ... وهي اضافة الراتب الشهري مع الراتب الاضافي للموظف MARTIN


    - الأولويات الحسابية :

    اولويات ؟؟ ما قصدنا بهذا ؟ اليك درس بسيط في الرياضيات ولكن مهم جدا في التطبيقات البرمجية .. لا يستحب ان تعرفه .. ولا يفضل ان تعرفه .. بل يجب ان تعرف هذا الدرس
    ...
    لاحظ (لاحظ = فعل امر.. وهو اجباري
    ) المعادلتين الحسابيتين التاليتين :

    10+20*5 = ؟؟؟؟

    لو قلنا 10+20 = 30

    ثم ..

    30*5 = 150
    اذن الجواب هو 150

    طيب ...

    انا اعرف ان احدكم حسبها بهذه الطريقة ..
    5*20=100

    100 + 10 = 110
    أي الطريقين اصح ؟؟ هل 150 .. او 110 ؟؟

    لماذا بدأنا بالجمع ثم الضرب ...

    ولماذا بدأنا الضرب ثم الجمع ؟؟؟

    لماذا حصلنا على قيم مختلفة ؟؟

    اريدك ان تحفظ الاولويات التالية الان ...

    1- الاقواس

    2- الاسس

    3- الضرب او القسمة ..

    4- الجمع او الطرح

    احفظها صم ... يالله دقيقة حفظ ثم ارجع واقرأ ....

    اليك المسألة التالية ...
    كود:
     (1+2)*3=???
    هل الجواب هنا 9 ... او 7 ؟؟؟
    الاولوية تقول الاقواس اولا ... يعني 1+2 = 3 ... ثم .... 3*3=9 ....

    مسئلة اخرى

    كود:
     1+2*3=??

    هل 7 ام 9 ؟؟
    الاولوية تقول .. الاقواس .. ولكن لا يوجد اقواس .. اذن الاسس .. لا توجد اسس .. اذن ... الضرب او القسمة ..

    3*2=6 ..
    ثم الجمع او الطرح ..
    6+1=7
    مسئلة ثالثة ..
    كود:
     2*8/4 =??
    لا اقواس ... لا اسس .. فقط الضرب و القسمة .. ايهما نبدأ ؟؟
    لاحظ اننا كتبناها بالانجليزي ... ومسائلنا بالانجليزي ..

    خذ اول عملية تواجهك عندما تقرأ من اليسار الى اليمين (لو عربي .. فاننا نقرأ من اليمين الى اليسار طبعا ,,)

    اقرأ ... 2 ..... ثم ... ضرب ..... ثم 8 ... اذن الضرب له الاولوية ..

    2*8 = 16

    16/4 = 4
    المسئلة ما قبل الاخيرة ..
    كود:
      (3*4)+5*(4-2)/2
    هيا .. حلها في ورقة .. او في رأسك اذا كنت كألبرت انشتاين ...
    الان حلها ...

    ,,,

    ,,

    ,
    انتهيت ؟؟؟



    الحل كالتالي ...
    كود:
    = (12 ) + 5 * (2 ) / 2 = (12) + 10 / 2 = (12) + 5 = 17



    المسئلة الاخيرة :
    كود:
     1+2-3*5/5
    مارأيك لو جربت ^^ ؟؟

    ....

    ...

    ..

    .
    الحل :

    كود:
    = 1+2-15/5 = 1+2-3 = 3-3 0=


    اليك اول تحدي .. صعب لدرجة تجعلك تقف مشدوقا ... مستغربا مني .. لماذا أحب ان أعقدك ,,

    كود:
     ((1+2)*(5-3) + 2 )/(1+2/2) = ???
    وهو التحدي الاول في الدرس ,,, سواء حللت ام لم تحل التحديات... لن ينقص مني شيء ..
    اذا تجاهلت التحديات .. فانت تتجاهل نفسك لا اكثر ولا اقل .. ولا اهتم ما اذا كنت حللت ام لا ,, كل شيء لمصلحتك انت ...

    اذا لم تعرف راسلني . اطرح مشاركتك ... افعل أي شي .. وانا تحت خدمتك ,,



  9. #39
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

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

    هل هذا الامر صحيح ؟







    كود:
     Select sal*12+100 from emp ;









    هل تعتقد ان هذا الامر صحيح ؟







    كود:
     Select (sal*12)+100 from emp ;









    وهل تعتقد ان هذا الامر صحيح ؟





    كود:
     Select sal * (12+100) from emp ;



    أي الاومر اصح ؟؟























    الامر الاول والثاني هما الصحيحان ...



    اعتقد ان الاولويات بسيطة جدا ,, سوف تحتاجها كثيرا فيما بعد ... لذا لا تنسى ,,























    - اداة ضم الحقول :



    مارأيك بهذه النتيجة ... هل تستطيع ان تعمل مثلها ؟؟

    كود:
    ename and sal
     
    ---------------
     
    SMITH800
     
    ALLEN1600
     
    WARD1250
     
    JONES2975
     
    MARTIN1250
     
    BLAKE2850
     
    CLARK2450
     
    SCOTT3000
     
    KING5000
     
    TURNER1500
     
    ADAMS1100
     
    JAMES950
     
    FORD3000
     
    MILLER1300













    هل تستطيع ان تجعل عمود اسم الموظف مدموج مع عمود الرواتب ؟



    اليك الامر ...










    كود:
     select ename||sal as "ename and sal" from emp ;




    سوف تعرض النتيجة السابقة ..
    لاحظ هذه العلامة ||

    وهي الخاصة بعملية ضم اكثر من حقل .. وعرضها بشكل مضموم ....

    اليك مثال اخر











    كود:
     select ename||' and '||sal from emp ;




    اضفنا نص ..
    يعني ضمينا
    ename مع النص ' and ' مع sal










    وسوف تظهر هذه النتيجة ...


    كود:
     
     
    ENAME||'AND'||SAL
     
    ------------------
     
    SMITH and 800
     
    ALLEN and 1600
     
    WARD and 1250
     
    JONES and 2975
     
    MARTIN and 1250
     
    BLAKE and 2850
     
    CLARK and 2450
     
    SCOTT and 3000
     
    KING and 5000
     
    TURNER and 1500
     
    ADAMS and 1100
     
    JAMES and 950
     
    FORD and 3000
     
    MILLER and 1300
    كود:
    
    









    هل لاحظت كيف عرض العمود ؟؟

    لاحظ عنوان العمود ... عنوانه هو :
    ENAME||'AND'||SAL





    صحيح ؟



    طيب .. اريد ان اعرض عمود بهذا الشكل ...

    " الموظف
    KING يأخذ راتب 5000 "










    "الموظف
    SMITH يأخذ راتب 800 "












    ..... الخخخخخ



    يعني اريد النتيجة مثل هذه النتيجة ....

    كود:
     
     
    The_Information
     
    --------------------------------------------------
     
    the emp_name is : SMITH and his salary is =800
     
    the emp_name is : ALLEN and his salary is =1600
     
    the emp_name is : WARD and his salary is =1250
     
    the emp_name is : JONES and his salary is =2975
     
    the emp_name is : MARTIN and his salary is =1250
     
    the emp_name is : BLAKE and his salary is =2850
     
    the emp_name is : CLARK and his salary is =2450
     
    the emp_name is : SCOTT and his salary is =3000
     
    the emp_name is : KING and his salary is =5000
     
    the emp_name is : TURNER and his salary is =1500
     
    the emp_name is : ADAMS and his salary is =1100
     
    the emp_name is : JAMES and his salary is =950
     
    the emp_name is : FORD and his salary is =3000
     
    the emp_name is : MILLER and his salary is =1300


    كنت اريد ان اجعله تحدي ولكن .... تراجعت ...
    وكلي ثقة انك سوف تفكر فيه قبل ان تشاهد الاجابة ...

    ممممممم ... خذ راحتك ... دقيقتين .. ثلاث ... خمس ... اعتقد انه يستحق خمس دقائق بالكثير ...

    لا تريد ان تفكر فيه ...

    طيب .....

    انت حر .... اليك الامر ...
    كود:
     
     
    select 'the emp_name is : '||ename||' and his salary is ='||sal as "The_Information" from emp ;


    معقد قليلا ... ولكن بسيط ,,,























    - الغاء التكرار :



    لو طلبت منك ان تعرض لي ارقام الاقسام الموجودة في جدول الموظفين ...

    فسوف تقول ...










    كود:
     Select deptno from emp ;




    وسوف يعرض هذه النتيجة ...
    كود:
     
     
    DEPTNO
     
    -------
     
    20
     
    30
     
    30
     
    20
     
    30
     
    30
     
    10
     
    20
     
    10
     
    30
     
    20
     
    30
     
    20
     
    10


    لو سألتك ما هي الاقسام الموجودة لدينا ؟؟
    فستجيب ... مممم ... 20 ... و 30 ..... و 30... و 20 .... و 10 .....

    بالله عليك .. فيه قسم له الرقم 10 .. وقسم له الرقم 10 ؟؟

    ام انه هنالك قسم واحد يدعى 10 .. ولكن تكرر لاكثر من موظف ؟؟؟

    لو نظرت في النتيجة السابقة ... لوجدت انها 14 سجل فقط ...

    فكر لو كانو 14 مليار سجل .. وانه لا يوجد الا القسم 10 .. و 20 ... و 30 .... هل ستعرف ان عدد الاقسام قليل ؟؟

    طبعا شبه مستحيل ...

    نريد في هذه الحالة ان نلغي التكرار ...

    اليك الامر ...













    كود:
     select distinct deptno from emp ;









    كلمة distinct هي المسؤولة عن الغاء التكرار ,,

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

    النتيجة ستكون ....
    كود:
    DEPTNO
     
    -------
     
    10
     
    20
     
    30

    بدون تكرار ...
    لا تقل انها غير مفيدة ... لو ان لدينا جداول كثيرة ومعلومات وبيانات ضخمة ... فسوف تعرف فائدتها ...

    طبعا هذه الكلمة .. الخاصة بإلغاء التكرار .. لا تصلح إلا لـعمود واحد ...

    ولا تصلح لاكثر من عمود ... نادرا ما تحدث .. واعتقد انها صدفة انها ستصلح لاكثر من عمود ,,

    هل تريد ان تعرف مالذي سيحدث لو الغيت تكرار عمودين ؟؟

    تخيل اننا نريد ان نلغي تكرار الرواتب و ارقام الاقسام .. اليك الامر ..









    كود:
     select distinct sal , deptno from emp ;


    واليك النتيجة :
    كود:
    SAL DEPTNO
     
    ----- ----------
     
    800 20
     
    950 30
     
    1100 20
     
    1250 30
     
    1300 10
     
    1500 30
     
    1600 30
     
    2450 10
     
    2850 30
     
    2975 20
     
    3000 20
     
    5000 10

    ستلاحظ ان الرواتب التغى تكرارها ... ولكن هل التغى تكرار ارقام الاقسام ؟
    سوف تحدث مشاكل نحن بغنى عنها وعن شرحها ... ,,,, لذا ... استخدمها الان لعمود واحد ,,
























    - ماهي القيمة
    NULL












    هي قيمة خالية .
    ..












    لا قيمة لها ...



    ليست بصفر ...

    وليست برقم ...

    وليست مسافة ..

    ولا حتى بشيء ...

    لا احد يعلم ما قيمتها ... غير انها مجرد .. خالية ...

    هي فراغ .... ولا شيء غير الفراغ ,,

    هل تذكر العمود
    comm. من جدول الموظفين emp ؟؟؟؟











    كود:
     select sal , comm from emp;




    النتيجة المتوقعة ... هي ...

    كود:
     
     
    SAL COMM
     
    ----- ----------
     
    800
     
    1600 300
     
    1250 500
     
    2975
     
    1250 1400
     
    2850
     
    2450
     
    3000
     
    5000
     
    1500 0
     
    1100
     
    950
     
    3000
     
    1300
    كود:
    
    









    هل شاهدت فراغات في العمود comm. ؟؟ اعرف انك لم تشاهدها , ولكن نكمل

    بعض الموظفين لا توجد لديه بدلات (بدلات رواتب اضافية ..)

    لاحظ ان احدهم لديه القيمة صفر والصفر ليست القيمة الخالية
    NULL .. ولاحظ ان بعضهم لديه القيمة الخالية NULL





    والبعض الاخر يوجد عنده رواتب اضافية ,,



    القيمة الخالية ... تسبب بعض الاحيان مشاكل ... و امراض معدية .. من تلبك معدي .. الى انفيولنزا ..

    من هذه المشاكل مايلي ..

    نريد حساب الراتب الكامل وهو يساوي .. الراتب الاساسي
    sal + الراتب الاضافي comm.



    كود:
     select ename , sal+comm from emp ;


    والنتيجة هي :

    كود:
     
     
    ENAME SAL+COMM
     
    ---------- ----------
     
    SMITH
     
    ALLEN 1900
     
    WARD 1750
     
    JONES
     
    MARTIN 2650
     
    BLAKE
     
    CLARK
     
    SCOTT
     
    KING
     
    TURNER 1500
     
    ADAMS
     
    JAMES
     
    FORD
     
    MILLER


    اوبس .. سميث راتبه 800 دولار ... ولا يملك أي رواتب اضافية .. أي قيمة الرواتب الاضافية هي NULL









    بالله عليك .. قلي ..












    800 + NULL = ؟؟؟



    تساوي كم ؟؟

    هل 800 ؟؟

    قلنا ان
    NULL قيمة لا نستطيع تحديدها .. وهي خالية ,, وليست صفرا ...

    اذن .. فناتج المعادلة ..











    800+NULL=NULL












    قاعدة اساسية ... يجب ان لا تغفلها .....












    " اذا ضربنا ... جمعنا .. قسمنا ... طرحنا .. من القيمة NULL .. فالناتج هو NULL "














    طيب ... مالعمل اذا اردنا ان نعرف الراتب الكامل ... لسميث المسكين ؟؟



    سوف نحل هذه المشكلة فيما بعد ... ترقب ^^














    * جملة الشرط where :










    سوف ندرس جملة الشرط هذه بتوسع اكثر ..



    سأقوم بتغطية هذه الجملة من جهتين ... من عمليات (معاملات) المقارنة ... ومن عمليات اخرى ,,























    - اولا : عمليات المقارنة في جملة الشرط :

























    اخذت في السنة الاولى ابتدائي .. في الرياضيات ... المقارنة .. (اكبر من .. اصغر من .. يساوي )












    ... أصعب درس رياضيات ^^"












    ممممم ... مثلا ,,



    ايهما اكبر 1 او 1000 ؟؟

    اعرف انك لا تستطيع التفكير ,,, او بالأحرى لا تعرف الاجابة لذا ..

    ال 1000 اكبر من 1











    يعني تنكتب 1000 > 1



    وطبعا الـ 1 اصغر من 1000

    طيب ... نعقد الأمور اكثر ...

    ونقول ..

    س اكبر من عشرة ... ما قيمة س ؟

    س ممكن ان تكون سالب مليون ... ممكن تكون واحد ... ممكن اثنين .. ممكن ان تكون تسعة .. ولكن لا يمكن ان تكون عشرة ...

    هي اصغر من العشرة ولو بشعرة ....

    ممكن ان تكون 9.99999999

    يعني باختصار ...س .... من سالب مالا نهاية .. الى التسعة

    س= {- مالا نهاية
    ........... 9 }










    طيب .. نعقد أكثر
    وأكثر ,,



    - س اكبر من او تساوي عشرة ...

    يعني س من سالب مالا نهاية ... الى العشرة ,,

    طيب ما
    قبل اخر مسألة بهذا الخصوص ...

    - س اصغر من او تساوي ثلاثة ... واكبر من واحد ..

    ما قيم س الحقيقية ؟ (حقيقية = هي أرقام بدون كسور ...)

    س={2 , 3}

    طيب اخر مسألة
    :










    - س اصغر من 3 ... واكبر من او تساوي 3



    قيم س الحقيقية هي ....

    مممممممم ...

    س= {-مالا نهاية
    .......... + مالا نهاية }










    يعني جميع الأعداد
    بما فيهم الثلاثة ,,



    الان انظر الصورة 36 :





















    ....




    مممم ...
    انتظرني ,,,

  10. #40
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء




    - مثال :



    اريد عرض اسماء ورواتب جميع من رواتبهم اقل من او تساوي 1250 دولار ,,

    يعني النتيجة تكون هكذا :
    كود:
    ENAME SAL
    
    ---------- ----------
    
    SMITH 800
    
    WARD 1250
    
    MARTIN 1250
    
    ADAMS 1100
    
    JAMES 950
    كود:
    
    









    ماهي الجملة ؟

    فكر ....

    الحل :

    كود:
    select ename,sal 
    
    from emp
    
    where sal <= 1250 ;


    - مثال :
    اريد عرض اسماء ورواتب الموظفين الذين لهم رواتب اكبر من او تساوي 1250 واصغر من او تساوي 3000

    ؟؟؟ كيف هذه ؟

    ستعرف لها طريقين .. تذكرها جيدا .... احد هذه الطرق ... تجده في معاملات جملة الشرط
    where الاخرى ,


















    ثانيا : معاملات اخرى لجملة الشرط
    where












    عرفنا المقارنة ..



    الان تعرف بعض المعاملات الاخرى والتي يجب ان نتعمق فيها جيدا ..


    1) المعامل Between





    اذا كنت تشكو من اللغة الانجليزية مثلي .. فـكلمة "
    between" معناها "بين"


    - مثال :

    اريد عرض اسماء ورواتب الموظفين الذين لهم رواتب اكبر من او تساوي 1250 واصغر من او تساوي 3000

    ؟؟؟ كيف هذه ؟

    اليك الجملة :
    كود:
    select ename , sal from emp
    
    where sal between 1250 and 3000 ;
    كود:
    
    





    ومعنى الجملة السابقة ..

    اعرض لي اسماء ورواتب .. الموظفين والذين رواتبهم ... مابين 1250 و 3000 دولار ,,










    هل لاحظت تركيب المعامل
    between ؟؟ وهل لاحظت زيادة كلمة 'and' ؟


    انا متأكد انك ذكي .. ولاحظت ان معنى الجملة السابقة ... مايلي :






    اعرض لي اسماء ورواتب .. الموظفين والذين رواتبهم ...اكبر من او تساوي 1250 و اقل من او تساوي 3000 دولار ,,






    ممممم ,,,,

    انا شخصيا لم اكتفي .. اريد تجربة شيء ...

    لو قلبنا القيمة الصغرى مع القيمة الكبرى ؟؟ يعني كتبنا الجملة كما يلي :
    كود:
    select ename , sal from emp
    
    where sal between 3000 and 1250 ;





    لاحظ انني بدأت بالكبير ثم الصغير ... هل تتوقع ان المعامل between ذكي ؟؟ ام لا ؟؟

    ستكون النتيجة ..



    كود:
     no rows selected



    ... كما توقعت ... هذا المعامل غبي جدا .... يجب ان تبدأ من الصغير الى الكبير ..
    لو وضعنا .... مابين 3000 .. و 3000 ؟؟؟
    كود:
    select ename , sal from emp
    
    where sal between 3000 and 3000 ;
    كود:
    
    





    لقد جربت .. ونجح المعامل .... أي عرض لي من لهم رواتب 3000 دولار ,,

    كود:
    ENAME SAL
    
    ---------- ----------
    
    SCOTT 3000
    
    FORD 3000


    جميل جدا ... معامل بسيط ... ولا داعي لشرحه اكثر من هذا ,,









    2) المعامل IN






    لماذا هذا المعامل ؟


    لـ .... ممممم ... اعطيك مثال ,,

    لو طلبت منك ان تعرض لي من رواتبهم 1100 ... و 1250 ... و 3000 ... فقط ..

    مالذي تعمله ؟؟

    هل تستطيع بالمعامل
    between ؟؟ لماذا ؟

    طبعا لا .. لا تستطيع ..

    لانه وبكل بساطة هنا اكثر من قيمتين .. هذا سبب ..






    اسمع احدكم يقول لي ... طيب .... سوف اعرض من رواتبهم ما بين 1100 و 3000


    واقول له ... برافو يا ذكي ...

    غغغغغغغغغغلطططططططططططط !! ... مع مرتبة الشرف ,,
    ,,





    يوجد سبب
    .. ماهو ؟؟ فكر قليلا ...







    ...


    ..

    .





    فكرت ؟؟ لا اعتقد .... نكمل ,,,


    انا اخبرك ... لو كتبنا هذه الجملة ..
    كود:
    select ename , sal from emp 
    
    where sal between 1100 and 3000 ;

    انظر النتيجة ...
    كود:
    ENAME SAL
    
    ---------- ----------
    
    ALLEN 1600
    
    WARD 1250
    
    JONES 2975
    
    MARTIN 1250
    
    BLAKE 2850
    
    CLARK 2450
    
    SCOTT 3000
    
    TURNER 1500
    
    ADAMS 1100
    
    FORD 3000
    
    MILLER 1300
    كود:
    
    





    لا تعليق !!!

    لن اشرحها ...





    اذن .... لاحظنا المشكلة السابقة ...


    انا اريد فقط ثلاث قيم ... اريد من هم رواتبهم تساوي ... 1100 او 1250 او 3000 دولار ..

    لا اريد غيرهم ... هل استطيع بالمعامل
    between ؟؟ لا طبعا ..

    اليك الحل :
    كود:
    select ename , sal from emp 
    
    where sal in (1100,1250,3000) ;
    كود:
    
    





    وهذه النتيجة ..

    كود:
    
    ENAME SAL
    
    ---------- ----------
    
    WARD 1250
    
    MARTIN 1250
    
    SCOTT 3000
    
    ADAMS 1100
    
    FORD 3000





    هل لاحظت المعامل IN ؟؟؟

    الان سوف اخبرك سرا .... اريدك ان تتذكره جيدا .. سوف اذكرك فيما بعد ...

    هل قلت في السوال
    " اريد عرض الذين رواتبهم تساوي 1100 او 1250 او 3000 "



    أو قلت "اريد عرض الذين رواتبهم تساوي 1100 و 1250 و 3000" ؟؟


    ركز .. هناك فرق بين "و" ... وبين "أو"

    ركز جيدا ... هل من المعقول ان نقول .. 1100 و 1250 و 3000 ؟؟

    بالله عليك .. قلي أي موظف على مر العصور ... من عصر المكاتب والشركات الحجرية .. الى عصر المكاتب والشركات الحديثة ... هل يوجد موظف من الممكن ان يكون راتبه 1250 .. و 3000 .. و 1100 في نفس الوقت ؟؟؟

    بالله كيف تجي ؟؟ لا عقل يقبل .. ولا منطق ,,

    طيب ... الموظف احمد من الممكن ان يكون راتبه 1250 او 3000 او 1100 .... بالعقل تفهم ان الجملة صحيحة .... ممكن 1100 ... أو ......... 3000 ؟؟ أو 1250 ؟؟؟؟





    يعني معقولة ومنطقية ,,,













    طيب ..


    - اريد ان اعرض رواتب وأسماء و أرقام
    كل من اسمه سميث أو كنق أو سكوت ...

    ماهي الجملة ؟؟

    بسيطة ... تستطيع ذلك ,,






    ....


    ...

    ..

    .





    هذه الجملة ..




    كود:
    select empno , ename , sal from emp 
    
    where ename in ('KING' , 'SMITH' , 'SCOTT' ) ;

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

  11. #41
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء

    بسم الله الرحمن الرحيم



    الدرس السابع






    اسم الدرس :جملة الاستعلام
    select ومعاملات الجملة الشرطية (الجزء الثاني)


    نوع الدرس : تطبيقي

    صعوبة الدرس : *** من *****

    اهميــة الدرس : ****** من ***** (
    Over)





    درجة احتراف لغة الـ
    SQL المتوقعة بعد هذا الدرس : * من ***** (مبتدئ)



    الوقت المتوقع منك لفهم الدرس :
    10 ساعة (ساعتين فهم و 8 ساعات تطبيق )

    متطلبات تتوفر فيك : التطبيق
























    المتوقع منك في هذا الدرس :



    - اتقان جزء من هذه اللغة 100 %
    .











    - معرفة جميع معاملات الجملة الشرطية
    Where .



    -
    تقوية منطقك .











    هيا لنؤركل ^^



    السلام عليكم ,,




    اخذنا معاملات جملة الشرط where في الدرس السابق ,,

    واريد ان اوضح مسألتين مهمتين جدا جدا جدا !! نسيت ذكرهما في الدرس السابق

    الأولى :

    لما قلنا جملة الاستعلام التالية :




    كود:
     select * from emp 
     
    where ename='KING' ;




    سوف يعرض لي بيانات الموظف KING



    لو هناك موظف اخر يدعى بـ King فهل ستعرض بياناته ؟؟ طبعا لا .... لان البيانات الموجودة في الجدول ثابتة الشكل كما عرفت من قبل ..
    يعني بإلإمكان ان يكون هناك الموظفين التاليين :




    KING , King,KiNg,KiNG,KinG , KINg,KInG,KIng
    kING , king,kiNg,kiNG,kinG , kINg,kInG,kIng




    هل شاهدت انه نفس الحروف ولكن تتغير حالة الاحرف من احرف كبيرة واحرف صغيرة ؟؟انت تعرف انه موظف واحد ويدعى بـ كنق ... لا يهم .. حروف كبيرة حروف صغيرة ..
    ولكن الحاسب الذي يعتقد معظم البشر انه اذكى من البشر ... لن يكتشف هذا الشيء ..
    ذلك الشيء الغبي (الحاسب) .. لا يعرف ان يفرق ... بينهم .. سوف يعتبرهم 16 موظف مختلف عن الاخر ..
    لو اردت البحث عن KING وكتبت king فسوف تعرض بيانات king وليس KING الذي انت اردته !!
    سوف نتطرق إن شاء الله لطرق كثيرة ومحددة لذاك الشيء الغبي ... كي يفهم ما نريده تماما ..

    الثانية :
    قلنا انه توجد معاملات المقارنة ... ومعاملات اخرى ,,
    انا اخطأت في قولي اننا سوف ندرس معاملات جملة الشرط where



    وقلت انها من جهتين فقط ... جهة عمليات او معاملات المقارنة ...
    ومعاملات اخرى ..
    والحقيقة انه يوجد عمليات ثالثة مهمة جدا ..وهي العمليات المنطقية !!

    المعاملات الاخرى التي غطيناها هي ..


    - المعامل Between



    - المعامل IN





    اخر امر وضعناه هو :





    كود:
      
    select empno , ename , sal from emp 
     
    where ename in ('KING' , 'SMITH' , 'SCOTT' ) ;




    والناتج كان :






    كود:
    
    
    كود:
     
    
    
    
    EMPNO ENAME SAL ------ ---------- ----------
    7369 SMITH 800
    7788 SCOTT 3000 7839 KING 5000


    اعرف ان العرض سيء .. ولكن .. افهموها >< .....


  12. #42
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء


    الان اليك المعامل الثالث :
    3) المعامل LIKE

    وكالعادة ... الذي يجد صعوبة في لغة الانجليزي (مثلي طبعا ^^) فكلمة like تعني ... "تشبه" او تعني ..."مثل"
    This Man is Like Me
    ومعنى الجملة السابقة .. هذا الرجل يشبهني ... او هذا الرجل مثلي ,,
    خلينا نتفلسف قليلا ...
    طبعا الشبه ليس مثل نفس ... يعني هذا الرجل يشبهني .. وهو مثلي .. ولكنه ليس انا .. اذ انه يشبهني جزئيا وليس كليا ....
    اعتقد انها وصلت ,,
    المهم المهم
    هذا المعامل خاص بالنصوص والتواريخ ... تواريخ ؟؟ لم نتطرق الى التواريخ ..
    سوف اخصص درس كامل عن التواريخ ... لا تقلق ,,
    اشير الى ان التواريخ تشبه النصوص ..... قليلا ^^
    أي ان :
    The dates is like the text
    اوكيه .. ملينا من درس الانجليزي ...
    نبدأ في الدرس الاساسي ^^
    اريد منك حفظ هذان الرمزان ... ولا تسألني لماذا .. الان احفظهما عن ظهر قلب ,
    العلامة %
    من منا لا يعرف العلامة الخاصة بالنسبة المئوية ؟؟؟... ومعناها هنا صفر حرف او اكثر ... بمعنى اخر .. ممكن ان تكون ولا حرف .. وممكن ان تكون حرف .. حرفين .... مليون حرف ... يعني أي عدد من الاحرف.. حتى الصفر ,,
    العلامة _
    وهي العلامة الشرطة التحتية .. هل عرفتها ,,
    معناه حرف واحد فقط .... ليس حرفين ولا ثلاثة .. بل حرف واحد فقط ...

    بينما كنت تتمتع باحلام اليقظة في مكتبك ....
    جاءك احدهم وقال لك .. اريد ان اعرف كم موظف لدينا اسمه يبدأ بحرف الS
    مالعمل ؟؟؟
    جاءك اخر .. وقال اريد كل الموظفين الذين أسمائهم مكونة من أربعة أحرف ...
    مالحل ؟؟
    جاءك ثالث .. وقال اريد ان اعرف الموظفين الذين يوجد حرفين t في اسمه
    مالذي يجب فعله ؟؟
    جاءك رابع ... وقال اريد ان اعرف اسماء الموظفين والتي حرفها الثاني M
    ماذا تفعل ؟؟
    جاءك الذي ارسل الاربعة السابقين (المدير)لتعجيزك .. واراد منك كل الموظفين الذين توظفوا في الشركة في اليوم الثالث من أي شهر ,,
    مالذي سوف تستخدمه ؟؟
    اليك بعض الحلول والامثلة للمعامل like ,,
    - اريد اسماء الموظفين والتي تبدأ بحرف الـ S
    كود:
    select ename from emp 
    where ename like 'S%' ;
    والناتج هو اسماء الموظفين والتي تبدأ بحرف الـ S

    كود:
    ENAME
    ------
    SMITH
    SCOTT
    هل شاهدت المعامل like ؟؟
    كأنه يساوي . ولكنه ليس كاليساوي ...
    يقول اعرض اسماء الموظفين الذين اسمائهم كأنها على الشكل التالي :
    اول حرف هو S ... وثاني الحروف (وهي العلامة %) هو ... أي حرف واي عدد من الاحرف ... حتى لو لم يكن هناك احرف
    انتبه ... ركز ....
    لو كان هناك موظف اسمه S ,,, وكتبنا الكود السابق ... هل يعرضه ؟؟ ام لا ؟؟
    طبعا سوف يعرضه .. لانه اول حرف من اسمه هو الـS وبعدها صفر حرف .. هل فهمت ؟؟

    طيب لو كان هناك موظف اسمه OSAMA هل تعتقد انه سوف يعرضه ؟؟
    طبعا لا .. ليييييش ؟؟؟؟
    لان حرف الـS ثاني حرف وليس اول حرف ...

    طيب اليك هذا الامر ... واخبرني مالناتج ؟؟


    كود:
    select * from emp 
    where ename like 's%' ;
    مالناتج ؟؟
    ولماذا ؟؟
    صح ,, الناتج هو نفس الناتج السابق ^^ .,,,
    سوف يعرض هذه النتيجة .. ^^

    كود:
    ENAME
    ------
    SMITH
    SCOTT
    بالله عليك .. هل s هي نفسها S ؟؟؟
    قلنا اعرض اسماء الاشخاص التي تبدأ بحرف الـ s وليس الـ S !!
    يعني اذا كان الامر السابق /

    كود:
    select * from emp 
    where ename like 's%' ;
    فالنتيجة تقول ...
    كود:
    no rows selected
    لانه لا يوجد احد يبدأ اسمه بحرف الـ s (small s not capital S!!)

    يعني ان النتيجة :

    كود:
    ENAME
    ------
    SMITH
    SCOTT
    خاطئة ...
    يجب التنبه على حالة الاحرف !
    يجب ان تتنبه جيدا لهذا الامر !!

    الان نريد ان نعرف اسماء الموظفين والتي حرفها الثاني M

    اليك الامر ...

    كود:
    select ename from emp 
     where ename like '_M%' ;
    والناتج هو اسماء الموظفين التي ثاني حرف فيها هو الحرف M
    كود:
    ENAME
    -------
    SMITH
    ظهرت لنا هذه العلامة _ (الناقص التحتية )
    ومعناها أي حرف لكنه حرف واحد فقط ...
    ما معنى الامر السابق ؟؟
    معناه اعرض لي اسماء الموظفين من جدول الموطفين ...
    والذين اسمائهم تشبه مايلي :
    أي حرف .. ثم حرف الـ M .... ثم أي عدد من الحروف .. ايا كانت هذه الحروف ,,

    الان نحل مسألة المدير ....
    ولكن اولا .. هل تعرف تركيبة الشهر في هذا الجدول ؟؟
    لو ادخلنا الامر التالي ...
    كود:
    select hiredate from emp ;
    فسوف يكون الناتج .... مايلي :
    كود:
     
    HIREDATE
    --------
    17/12/80
    20/02/81
    22/02/81
    02/04/81
    28/09/81
    01/05/81
    09/06/81
    19/04/87
    17/11/81
    08/09/81
    23/05/87
    03/12/81
    03/12/81
    23/01/82
    هل شاهدت تركيب التاريخ في الجدول ... غريبة !!
    خانتين يوم / خانتين شهر/خانتين سنة
    مثلا
    23/01/82
    أي انه توظف في يوم 23 .. شهر واحد في السنة 1982
    تم تجاهل الـ 19 .....
    الان اراد منك المدير كل الموظفين الذين توظفوا في الشركة في اليوم الثالث من أي شهر ومن أي سنة .. لا يهم الشهر ولا السنة .. المهم هو اليوم ,,
    اليوم الثالث ... يعني بهذا الشكل .. "03" وليس "3" فقط !!
    انتبه جيدا لهذا الشكل ...
    يعني
    03/؟؟/؟؟
    ممممم ... كيف نكتبها هذه ؟؟
    نجرب ..
    كود:
    select ename , hiredate from emp 
     where hiredate like '03%' ;
    و النتيجة هي كل الموظفين الذين توظفوا في اليوم الثالث .. من أي شهر .. ومن أي سنة :

    كود:
    ENAME	  HIREDATE
    ---------- --------
    JAMES	  03/12/81
    FORD	   03/12/81
    اريد الان كل الموظفين الذين اسمائهم مكونة من اربعة احرف مالعمل ؟؟...
    هذه العلامة _ .... للحرف الواحد .. ايا كان هذا الحرف ...
    طيب .. هذه العلامتين __ ... معناه حرفين اثنين .. ايا كانا هذان الحرفان ,,
    اليك الامر يا فتى ...
    كود:
    select ename from emp 
     where ename like '____' ;
    مع مراعاة انها اربع علامات خطوط تحتية هكذا ____
    والنتيجة هي اسماء كل الموظفين التي تحتوي على اربع احرف ..
    كود:
    ENAME
    -----
    WARD
    KING
    FORD
    الآن أريد عرض كل أسماء الموظفين التي تحتوي على حرف الـ T مرتين .. يعني لو أن احدهم يدعى بـ SCOTT فسوف يعرض ... فهو اسم يحتوي على الحرف T مرتين ..
    ولو ان احدهم يدعى TRRRRRRRRT فسوف يعرض أيضا لأنه يحتوي على الحرف T مرتين وهكذا ,,,,,,
    ممممم ... انا اعتمدت طريقة الاحتمالات في تدريسك الدورة ....
    يعني باختصار أنت لا تفكر ... سوف أجعلك تواجه هذه المشكلة .. أتحداك ان تحلها ... وهذا هو التحدي الاول ,,
    ...
    ذاهب وراجع ^^

  13. #43
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء



    4) المعامل الاخير في المعاملات الاخرى ..الخاصة بجملة الشرط .. وهو المعامل IS NULL
    هل تذكر الحقل
    comm. ؟؟

    وهو الخاص بالرواتب الإضافية ...اعرف إني أقلقتك بهالحقل .... بس التذكير جميل ^^

    بعض الموظفين ليس لديهم رواتب اضافية .. لذا وضعنا القيمة
    NULL صح ؟

    طيب ... اريد ان اعرض اسماء كل الموظفين الذين لا يملكون رواتب اضافية ... كيف ؟

    بهذا الامر ..

    كود:
    select ename from emp 
    
    where comm =NULL ;
    صح ؟

    صح ^^ ... اذن النتيجة هي ...
    كود:
    no rows selected
    اوبس ...

    لا احد ؟؟

    يعني كلهم يأخذون رواتب اضافية ؟ مستحيل ...

    اكيد الامر السابق خطأ ...

    مالعمل ؟مالحل؟؟؟

    انه المعامل
    IS NULL
    يقول لك خطأ ياسيدي ان تقول
    comm=null
    عملية المساواة مع الـقيمة الخالية مستحيلة ..

    وشيء اكيد عمليات "اكبر من" و "اصغر من" و "اكبر من او تساوي "... و "اصغر من او تساوي "... "ولا تساوي "

    هي ايضا لا تعمل مع القيمة الخالية
    null
    هل ما زلت تريد عرض جميع من ليس لديهم رواتب اضافية .؟؟ طيـــــــــــــــب ... الحل هو :




    كود:
    select ename from emp 
    
    where comm is null ;
    والنتيجة




    كود:
    ENAME
    
    -------
    
    SMITH
    
    JONES
    
    BLAKE
    
    CLARK
    
    SCOTT
    
    KING
    
    ADAMS
    
    JAMES
    
    FORD
    
    MILLER
    هؤلاء هم الذين لا يملكون رواتب اضافية ,,

    اذا لم تصدق ,, تأكد بنفسك وسوف تجدهم هم ^^

    بسيط صح ^^ ؟؟

    سوف اصعب عليك واعقد الموضوع اكثر .... لاني بكل بساطة ^^ ..... سادي في هذه الامور ,,

    ثالثا : المعاملات المنطقية ...
    - المنطق :

    مالمنطق ؟؟

    اهم موضوع في البرمجة اعتبره المنطق ... اليك درس قواعد ^^

    احب ان احذرك ... ان السطور القادمة مملة مملة مملة لدرجة الموت ... لذا ...

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

    واذا لم تقرأها ... فأنت حر .. وحتفوت عليك فرصة ^^

    المشكلة انك اذا قرأتها لا تعرف هل تحسنت ام لا ...

    فلا تستغرب اذا انتهيت منها .. انك تقول في نفسك ... "لقد كذب علي حمزة وقال انني سوف اتحسن .. لم اتحسن"

    انا اقول لك وبكل ثقة .. سوف تتحسن كثيــــــــــــــرا (لاحظ كثيرا )

    اليك الدرس :

    ذهب احمد و محمد الى السوق ...

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

    اولا .... مين ذهب ؟؟ احمد + محمد صح ؟؟ يعني احمد و محمد ذهبا ,,

    هل ذهب احمد ولم يذهب محمد ؟؟ لا

    هل لم يذهب احمد وذهب محمد ؟؟ لا

    هل لم يذهب محمد ولم يذهب احمد ؟؟ لا

    هل ذهب احمد وذهب محمد ؟؟ نعــــــــم



    طيب ما رأيك في الجملة التالية ؟؟

    ذهب احمد او محمد الى السوق ....

    ممم

    من الذي ذهب ؟؟ يا احمد ؟؟ او محمد ؟؟ لا احد يعرف ...

    كل ما نعرفه ان حمزة قال لنا "احمد او محمد ... ذهب احدهما او كلاهما السوق ..."

    كأن حمزة هذا .. لايعرف أي منهما ذهب .. ولكن هو متأكد انه ذهب احدهما او كلاهما !

    هل ذهب احمد وذهب محمد الى السوق ؟؟ نعم

    هل ذهب احمد ولم يذهب محمد الى السوق ؟؟ نعم

    هل لم يذهب احمد وذهب محمد الى السوق ؟؟ نعم

    هل لم يذهب احمد ولم يذهب محمد الى السوق ؟؟ لا .... مستحيل .. يعني مين راح ؟؟ الجني الأزرق ؟؟؟

    لاحظنا في الجملتين الاثنتين .. اختلاف بسيط وهو .. "و" ... "او"

    اذا لم تفهم المغزى ... فتابع
    .,,
    اولا ... ( و ):

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

    اذا حللت السؤال الأول صح .. و (لاحظ الحرف و).... حللت السؤال الثاني صح ... فسوف تنجح ...
    وتكون إنسان صحيح

    طيب نأتي للاحتمالات التي من الممكن ان تقع انت فيها

    السؤال الاول صحيح و
    السؤال الثاني صحيح ... أنت صحيح

    السؤال الاول صحيح و
    السؤال الثاني خاطئ .. أنت خاطئ

    السؤال الاول خاطئ و
    السؤال الثاني صحيح .. أنت خاطئ

    السؤال الاول خاطئ و
    السؤال الثاني خاطئ .. أنت خاطئ
    الملخص هو ...

    صح و صح .. صح

    صح و خطأ .. خطأ

    خطأ وصح .. خطأ

    خطأ وخطأ .. خطأ

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





    ثانيا ( أو ) :

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

    اذا حللت السؤال الأول صح .. أو (لاحظ الحرف و).... حللت السؤال الثاني صح ... فسوف تنجح ... وتكون إنسان صحيح

    طيب نأتي للاحتمالات التي من الممكن ان تقع أنت فيها في هذا الاختبار

    السؤال الاول صحيح أو
    السؤال الثاني صحيح ... أنت صحيح (لاحظ انها أو وليست و)

    السؤال الاول صحيح أو
    السؤال الثاني خاطئ .. أنت صحيح
    السؤال الاول خاطئ أو
    السؤال الثاني صحيح .. أنت صحيح
    السؤال الاول خاطئ أو
    السؤال الثاني خاطئ .. أنت خاطئ .. وللأسف (لاحظ وللأسف ..شفت كيف الليونة ؟)

    الملخص هو ...

    صح أو صح .. صح (لاحظ انها أو وليست و)

    صح أو خطأ .. صح

    خطأ أو
    صح .. صح
    خطأ أو
    خطأ .. خطأ


    يا سلام ... على المنطق الرائع الان منطقك 90% سليم ...

    لا تسألني اين الـ 10% المتبقية ...

    لانها من الصعب جدا الحصول عليها ...

    اذا اردت الحصول عليها فركز جيــــــــــــدا
    ..
    هناك شيء يدعى النفي .. يعني عكس الشيء ..

    يلعب .. نفيها لا يلعب

    جوع .. نفيها لا جوع ...

    جوع ... نفيها ايضا الشبع ...

    الآن تخيل اختبار غريب جدا ...

    من مختبر ومعلم غريب جدا ..

    يدعى بحمزة ..

    يقول لك هذا الغريب ..

    اذا حللت السؤال الاول ولم تحل السؤال الثاني ... فانت ناجح .. يعني انت صحيح
    !!!
    غريب ؟؟ هل لاحظت "لم" ؟؟؟ هل لاحظت حرف الواو ... في "و لم تحل السؤال الثاني" ؟؟؟

    ركز!! .... هنا يوجد نفي ... يعني لا تحل السؤال الثاني ...

    انت سوف تقع في هذه الاحتمالات ...

    السؤال الاول صحيح و
    السؤال الثاني صحيح ... أنت خاطئ !!!

    السؤال الاول صحيح و
    السؤال الثاني خاطئ .. أنت صحيح !!!

    السؤال الاول خاطئ و
    السؤال الثاني صحيح .. أنت خاطئ

    السؤال الاول خاطئ و
    السؤال الثاني خاطئ .. أنت خاطئ

    واو ... معقد بعض الشيء هاه ؟؟

    اليك الاحتمالات بشكلها المحسن ..

    اذا السؤال الاول الذي يجيب ان يكون صحيح حليته صح و
    السؤال الثاني الذي يجيب ان يكون خاطيء حليته صح ... أنت خاطئ !!!

    اذا السؤال الاول الذي يجيب ان يكون صحيح حليته صح و
    السؤال الثاني الذي يجيب ان يكون خاطيء حليته خطأ ... أنت صحيح !!!

    اذا السؤال الاول الذي يجيب ان يكون صحيح حليته خطأ و
    السؤال الثاني الذي يجيب ان يكون خاطيء حليته صح ... أنت خاطئ !!!

    اذا السؤال الاول الذي يجيب ان يكون صحيح حليته خطأ و
    السؤال الثاني الذي يجيب ان يكون خاطيء حليته صح ... أنت خاطئ !!!

    اليك الاحتمالات بشكل ملخص .. لكي تتفهم الوضع سريعا


    صح و صح الخطأ .. خطأ

    صح و خطأ الخطأ .. صح

    خطأ و صح الخطأ .. خطأ

    خطأ و خطأ الخطأ .. خطأ

    واو .. المسئلة تعقدت اكثر واكثر للبعض .. وصارت بسيطة للبعض الاخر

    نفس المنوال مع أو .. ولكن بهذه النتائج :

    صح أو صح الخطأ .. صح

    صح أو خطأ الخطأ .. صح

    خطأ أو صح الخطأ .. خطأ

    خطأ أو خطأ الخطأ .. صح

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

    ركز واقرأ ثانية ..
    ,,,


    اذا لم تعرف بالمرة.. او انك طفشت ولا تريد ان تفهم
    ..
    سوف تفهمها فيما بعد ... لا تخف .. سوف اجد الطريقة التي تناسبك ان شاء الله ,,

    الان ..

    عرفنا "و" ..."أو" ... واخيرا النفي .. اذا لم تفهمها احفظها الان .... اليك تلخصيها ...

    الـ "و"

    صح و صح = صح

    صح و خطأ = خطأ

    خطأ وصح = خطأ

    خطأ وخطأ = خطأ

    الـ"أو"

    صح أو صح = صح

    صح أو خطأ = صح

    خطأ أو صح = صح

    خطأ أو خطأ = خطأ

    الـنفي

    نفي الصح = خطأ

    نفي الخطأ = صح

    اشير الى نقطة مهمة جدا جدا جدا ... من الممكن ان تكون اكثر من قيمتين فمثلا ...

    صح أو صح = صح

    طيب ..

    صح أو صح أو صح = صح ....

    صح أو خطأ أو خطأ = صح ...

    يعني في النهاية نستنتج ان الـ "أو" ... يجب ان يكون فيها على الاقل .. قيمة واحدة صحيحة لكي تكون صحيحة
    .
    طيب ...

    صح و صح و صح = صح ...

    صح و صح و خطأ = خطأ ...

    يعني في النهاية نستنتج ان الـ
    "و" ... يجب ان يكون فيها على الاقل .. قيمة واحدة خاطئة لكي تكون خاطئة .

    طيب ...

    نفي نفي الصح = صح

    نفي نفي الخطأ = خطأ

    نفي نفي نفي الصح = خطأ

    اعرف الآن انك تقول دعك من الفلسفة الزائدة .. ولكن ,,, اليك تحدي ...

    صح و صح و صح و صح و خطأ = ؟؟؟

    خطأ أو صح أو خطأ أو صح = ؟؟؟

    نفي نفي نفي نفي نفي الخطأ = ؟؟؟

    وهو التحدي الثاني ,,,

    لنكمل المعاملات
    ,,

  14. #44
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء


    1) المعامل المنطقي
    AND
    للمتعسر في فهم الانجليزي .. مثلي ...
    And معناها "و"

    نريد عرض اسماء ورواتب الموظفين الذين راتبهم فوق الـ 1000 دولار .. و لا يملكون راتب اضافي ..

    لاحظ "و"

    اليك الحل ...

    كود:
    select ename,sal from emp 
    
    where sal>1000 and comm is null ;

    ياسلام .. هل شاهدت كيف تعمل
    and ؟؟


    اليك النتيجة .. وهي اسماء ورواتب الذين يأخذون راتب اكثر من 1000 دولار .. و لا يملكون راتب اضافي :
    كود:
    ENAME SAL
    
    ---------- ----------
    
    JONES 2975
    
    BLAKE 2850
    
    CLARK 2450
    
    SCOTT 3000
    
    KING 5000
    
    ADAMS 1100
    
    FORD 3000
    
    MILLER 1300
    لماذا النتيجة هذه ؟؟

    لا اريد ان أخبرك
    الآن ... اريدك ان تقول لنفسك لماذا ؟؟WHY ؟؟ ليش ؟؟

    اريد ان اعقد الامور اكثر ... وأقول
    ..
    اريد ان اعرض اسماء ورواتب الموظفين الذين راتبهم فوق الـ1000 دولار .. و لا يملكون راتب اضافي .. والذين أسمائهم
    أربع حروف فقط ...



    كود:
    select ename,sal from emp 
    
    where sal>1000 
    
    and comm is null 
    
    and ename like'____' ;

    واو ... لاحظ كم
    and أضفناها ... وكأننا نقول

    اعرض الحقول اسماء ورواتب من جدول الموظفين

    اذا كان الراتب اكبر من 1000

    و الراتب الإضافي قيمة خالية

    والاسم مكون من اربع احرف

    استخدمنا بعض المعاملات الاخرى في هذا الامر ... رائع ..

    سوف يعرض لي اسماء ورواتب كل من اسمه مكون من اربع احرف ويأخذ فوق 1000 دولار ولا يملك راتب اضافي :



    كود:
    ENAME SAL
    
    ---------- ----------
    
    KING 5000
    
    FORD 3000
    لماذا هذه النتيجة ؟؟
    KING رجل عملي .. ويحب الحياة ... ولكنه يكره التخاذل في العمل ,,

    لاحظ ان اسمه مكون من
    4 احرف .. في نفس الوقت .. راتبه اكثر من 1000 ... في نفس الوقت راتبه الإضافي فارغ أي لا يملك راتب اضافي ,,

    يا سلام ...

    نفس الشيء مع فورد
    FORD


    هنالك موظف مسكين .. يدعى
    SCOTT يتقاضى راتب 3000 دولار و لا يملك راتب إضافي , رجال طيب وفيه خير ..

    لم يعرض اسمه هنا لماذا ؟

    لأننا قلنا راتب فوق 1000 و (لاحظ الـ
    "و") راتبه الإضافي قيمة خالية و اسمه مكون من أربع أحرف

    سكوت راتبه فوق 1000 (صحيح) و راتبه الإضافي خالي (صحيح) و لكن اسمه ليس من اربع احرف (خاطئ)

    اذن ...

    صحيح و صحيح و خاطئ = خاطئ ,,

    إذن من الخطأ عرضه ...

    اذا لم تفهم .. اليك مثال اخر ...

    اذا كتبنا الامر التالي وهو عرض اسماء الموظفين الذين رواتبهم اقل من 1600
    :



    كود:
    select ename from emp
    
    where sal < 1600 ;

    فسيكون الناتج


    كود:
    ENAME
    
    -------
    
    SMITH
    
    WARD
    
    MARTIN
    
    TURNER
    
    ADAMS
    
    JAMES
    
    MILLER

    امر الخاص بعرض اسماء الموظفين الذين يملكون راتب اضافي ....
    كود:
    select ename from emp 
    
    where comm is not null ;

    وهم ...


    كود:
    ENAME
    
    -------
    
    ALLEN
    
    WARD
    
    MARTIN
    
    TURNER

    انظر الصورة 17


    في الصورة ...

    تخيل أن المربع الأيمن هو الشرط الخاص بمن هم رواتبهم اقل من 1600

    والمربع الأيسر هو شرط من يملكون رواتب إضافية
    ,,


    لو قلنا إننا نريد عرض أسماء الذين رواتبهم اقل من 1600 ويملكون رواتب إضافية
    ..
    بالله عليك ... ركز في الصورة السابقة ... من في الموظفين الذي راتبه اقل من 1600 وفي نفس الوقت لديه راتب إضافي
    ؟؟

    من من الموظفين تتوفر فيه الشرطين الاثنين في نفس الوقت ؟؟

    هل تريد الحل ؟؟

    اليك الامر .. التالي والذي يقول .. اعرض الموظفين الذين رواتبهم اقل من 1600 و لديهم راتب اضافي :

    كود:
    select ename from emp 
    
    where comm is not null
    
    and sal <1600 ;

    هذا هو الناتج ...
    كود:
    ENAME
    
    -------
    
    WARD
    
    MARTIN
    
    TURNER

    اذا لم تفهم لماذا الناتج هذا ,, انظر الصورة 27




    هل تشاهد اين تقاطع الشرطين ؟؟ انا اقصد بالتقاطع يعني .. التشابه ... الشرطين متشابهين في ثلاث موظفين ..

    هل عرفت الان فكرة
    and ؟؟

    وهي ناتج تقاطع الشروط ... يعني هنا شرطين ... تقاطعهما يعني بينهما
    and




    2) المعامل المنطقي
    OR
    اذا كنت متعقد من الانجليزية .. مثلي فإن
    OR تعني "أو"

    الان اريد عرض اسماء كل الذين راتبهم اصغر من 1600 ... أو عرض من لديهم راتب اضافي ...

    من الصورة السابقة 17 .... ستشاهد الشرط الاول من هم .. والشرط الثاني من هم ...

    اليك الامر الذي يبين كل اسماء من هم اصغر من 1600 أو من لديهم رواتب اضافية :



    كود:
    select ename from emp 
    
    where comm is not null 
    
    or sal <1600 ;

    النتيجة هم ....
    كود:
    ENAME
    
    -------
    
    SMITH
    
    ALLEN
    
    WARD
    
    MARTIN
    
    TURNER
    
    ADAMS
    
    JAMES
    
    MILLER
    اذا قلنا ان الـ
    and هي ناتج تقاطع الشروط ... فما رأيك في الـ or ؟؟

    هو جمع النواتج جميعها بدون تكرار ... هل فهمت ؟ لم تفهم ؟؟ اذن انظر الصورة 37




    هل تشاهد جميع الاسماء ؟؟

    اجمعهم جميعا ... والغي أي تكرار .. فسوف تحصل على ناتج الشرط ,, وهذا معنى
    OR الحقيقي ,,, كأنه الجمع ...

    نعقد المسئلة .. قليلا ..

    اريد عرض اسماء ورواتب كل من رواتبهم فوق الـ
    3000 دولار .. أو .. عرض اسماء ورواتب كل من لا يملكون راتب اضافي أو أسمائهم مكونة من اربع احرف ..
    اليك جملة الاستعلام التالية
    :



    كود:
    select ename,sal from emp
    
    where sal>3000
    
    or comm is null
    
    or ename like '____' ;

    وهذه هي النتيجة :


    كود:
    ENAME SAL
    
    ---------- ----------
    
    SMITH 800
    
    WARD 1250
    
    JONES 2975
    
    BLAKE 2850
    
    CLARK 2450
    
    SCOTT 3000
    
    KING 5000
    
    ADAMS 1100
    
    JAMES 950
    
    FORD 3000
    
    MILLER 1300

    لا تحتاج لعقل مدمر حتى تفهم مالذي حدث .. صح ؟

    اذا لم تفهم لماذا عرضت هذه النتيجة
    .. افهم الآن جيــــدا ...

    أولا ... اسأل نفسك ما معنى أن نعرض من هم ذو راتب اكثر من 3000 أو لا يملكون اضافي أو حروف اسمائهم 4 حروف ؟

    طبعا الجواب هو عرض أي شخص فيه الخصائص الثلاث جميعها .. او خاصيتين منها .. او خاصية واحدة منها

    الموظف الطيب سكوت الذي يتقاضى راتب 3000 دولار ولا يملك راتب اضافي... عرضناه هنا في النتيجة السابقة لماذا ؟

    اختل الشرط الاول..... لان راتبه 3000 ... وليس اكثر من 3000

    لم يختل الشرط الثاني .. لانه لا يملك راتب اضافي

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

    الشرط الاول خاطئ
    ... الشرط الثاني صحيح .... الشرط الثالث خاطئ

    خاطئ أو صحيح أو خاطئ = صحيح ... ممممم الجواب صحيح ؟؟ إذن اعرضه


    هناك موظف يدعى
    TURNER
    ويتقاضى راتب 1500 ... ولديه راتب اضافي ..

    بالله عليك هل نعرض هذا ؟؟

    اختل الشرط الاول فيه ... أي ان راتبه اقل من 3000

    اختل الشرط الثاني فيه ... أي انه يملك راتب اضافي ....

    اختل الشرط الثالث فيه ... أي ان اسمه ليست اربع احرف .. بل ست احرف ,,,

    الشرط الاول خاطئ .. الشرط الثاني خاطئ ... الشرط الثالث خاطئ ..

    خاطئ أو خاطئ أو خاطئ = خاطئ ... ممممم الجواب خاطئ ؟؟ اذن لا تعرضه

    هل فهمت ؟؟

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

    وأنا بكل رحابة صدر .. سوف اشرح لك مرة ومرتين وثلاث .... وألف ,,, لا تخف لن أأكلك ^^

    سنعود بعد قليل ,,,

  15. #45
    التسجيل
    26-07-2005
    الدولة
    Australia
    المشاركات
    3,368

    مشاركة: الطريق لاحتراف الاوراكل .. دورة مطوري اوراكل .. من الالف الى الياء


    الان في رأسي بعض التحديات :

    اليك التحدي الثالث :

    اريد عرض اسماء ورواتب الموظفين الذين راتبهم اكبر من 1000 واقل من 5000 بدون استخدام
    Between
    التحدي الرابع :

    اريد عرض اسماء ورواتب الموظفين الذين اسمائهم
    KING أو SCOTT أو TIGER بدون استخدام IN
    التحدي الخامس :

    هل تشاهد الصورة 47 ؟؟ وهي ثلاث شروط ... برأيك مالناتج اذا كان بينهم
    OR ؟؟ وما الناتج اذا كان بينهم AND
    (الصورة 47)








    قبل ان ابدأ في المعامل الاخير ... للمنطق اريد تذكيرك ببعض الامور .

    صح أو خطأ = صح

    بالانجليزي تكتب هكذا :
    True OR False = True
    اوكيه .. اتفقنا !!




    3) المعامل المنطقي الاخير NOT :
    ضعيف بالانجليزي ؟؟؟ يعني مثلي ...

    طيب
    NOT تعني "لا" وتعني نفي الشيء .. وفي درسنا هذا تعني عكس الشيء .. هل فهمت ؟

    هذا المعامل ... غريب بعض الشيء ...

    لا يستخدم مباشرة ..بل يجب ان يعمل مع معاملات اخرى وهي اربع معاملات
    :
    المعامل
    Between
    المعامل
    IN
    المعامل
    IS NULL
    المعامل
    LIKE


    نأخذها وحدة وحدة ..

    - استخدام
    not مع المعامل Between
    مثال عليها ... نريد عرض رواتب واسماء الموظفين الذين راتبهم ليس (لاحظ ليس) بين الـ 1000 و 3000

    اليك الجملة
    :

    كود:
    select ename,sal from emp 
    
    where sal not between 1000 and 3000 ;

    والناتج هو كل الموظفين الذين راتبهم فوق الـ3000 وتحت الـ 1000
    كود:
    ENAME SAL
    
    ---------- ----------
    
    SMITH 800
    
    KING 5000
    
    JAMES 950

    فهمت ؟

    - استخدام
    not مع المعامل IN
    اعرض اسماء من هم ليسو(لاحظ كلمة ليسو) في هذه القائمة :
    (KING , SCOTT , CLARK , ADAMS)
    اليك الأمر (دائما اقصد بالأمر هو جملة الاستعلام )
    :

    كود:
    select ename from emp 
    
    where ename not in ('KING' , 'SCOTT' , 'ADAMS' , 'CLARK');

    واليك النتيجة
    كود:
    ENAME
    
    ---------
    
    SMITH
    
    ALLEN
    
    WARD
    
    JONES
    
    MARTIN
    
    BLAKE
    
    TURNER
    
    JAMES
    
    FORD
    
    MILLER



    - استخدام
    not مع المعامل IS NULL
    ابسط مثال هو الحقل
    comm هل تذكره ؟؟ وهو الخاص بالرواتب الاضافية (احب ان اذكر كثيرا ^^.. اعذرني)
    اريد عرض اسماء و الرواتب الاضافية الخاصة بكل من هم ليسو من الذين لا يملكون راتب اضافي ...

    يعني اريد عرض كل من هم ليس راتبهم الإضافي يساوي
    null
    هل فهمت ؟؟

    اليك الامر :
    كود:
    select ename,comm from emp
    
    where comm is not null ;
    لاحظ ان عكس
    is null هي is not null
    والنتيجة هي كل من لهم راتب اضافي ,,
    كود:
    ENAME COMM
    
    ---------- ----------
    
    ALLEN 300
    
    WARD 500
    
    MARTIN 1400
    
    TURNER 0

    - استخدام
    not مع المعامل LIKE
    اعرض لي اسماء الموظفين التي لا تبدأ بحرف الـ
    S
    جملة الاستعلام :
    كود:
    select ename from emp 
    
    where ename not like 'S%';
    النتيجـــــــــــة :


    كود:
    ENAME
    
    -------
    
    ALLEN
    
    WARD
    
    JONES
    
    MARTIN
    
    BLAKE
    
    CLARK
    
    KING
    
    TURNER
    
    ADAMS
    
    JAMES
    
    FORD
    
    MILLER

    انتهينا من المعاملات جميعها ,,

    بقي ان أغوص بك في وحل المنطق مرة ثانية .. لأني
    أريدكأن تكون محترفا , ولأني أريدك ان تكون مبرمجا , ولأنيأريدك ان تدعي لي (وليس علي ) اذا واجهت مصائبها فيما بعد ..


    الآن ركز جيــــــــدا في المطلوب !! التركيز التركيز ,, ولا شيء غير التركيز ,

    اريد عرض اسماء و رواتب أساسية
    وإضافية للموظفين الذين اسمائهم مكونة من أربع احرف و لديهم رواتب اضافية أورواتبهم اكبر من 2000 دولار ...


    انا في رأيي الشخصي البحت .. والذي اعتقد انه 1000000% صحيح ..... ان السؤال السابق.. غامض .. ولا اعلم مالذي يقصده بالضبط اليك صيغتين :

    الصيغة الاولى :

    هل يريد الذين اسمائهم مكونة من اربع احرف ولديهم راتب اضافي ؟؟.....

    او

    الذين راتبهم اكبر من 2000 دولار ؟؟؟

    الصيغة الثانية :

    هل يريد الذين اسمائهم مكونة من اربع احرف ؟؟

    و

    لديهم رواتب اضافية او راتبهم اكبر من 2000 دولار ؟؟؟

    هل لاحظت لماذا وضعت انا هذه الصيغتين ؟ اذا لم تلاحظ بعد ... فجرب ان تفهم مايلي :

    الصيغة الاولى :
    (اسمائهم أربع حروف) و (لديهم راتب اضافي أو راتبهم اكبر من 2000 دولار )

    الصيغة الثانية : (اسمائهم اربع حروف و لديهم راتب اضافي )
    أو ( راتبهم اكبر من 2000 دولار )
    يعني الصيغة الاولى .. ان تتم عملية الـ
    OR اولا ثم AND
    وفي الصيغة الثانية .... ان تتم عملية الـ
    AND اولا ثم OR
    من البلاهة المغولية ان تقول ...
    "كلاهما نفس المعنى "... اذا كان تفكيرك بهذه الصيغة ... وبدون تفكير عميق ..

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

    اذا لم تفهم بعد مالذي يحدث هنا ... فجرب ان تفهم الان :


    هل تذكر الاولويات الحسابية ؟ والتي قلنا انها على هذا الترتيب :

    الأقواس

    الأسس

    الضرب او القسمة

    الجمع او الطرح

    هل تذكرها ؟؟

    هنا توجد اولويات ايضا !! اقصد بالأولويات يعني شيء قبل شيء .....

    يعني اولويات حسابية .. وأولويات منطقية !!

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

    اما الاولويات المنطقية فسوف نكتشفها الان ..

    هل
    AND اولا ثم OR ؟؟

    او
    OR اولا ثم AND ؟؟؟

    ام الذي نواجهه اولا .. هو الذي يكون اولا ؟؟ مثل ما شاهدنا في الضرب والقسمة ..

    الضرب او القسمة لهما نفس الاولوية .. صح ؟ أي منهما اولا اذا جاءا سوية ؟؟
    هل تذكر ؟؟

    طبعا الذي يوجهنا اولا ... يكون هو الاول ...

    من الممكن ان تكون
    AND و OR لهما نفس الاولوية , لا نعرف .....

    ممممم نجرب ... (لا تلومني .. انا لا اريد أعطيك معلومات جاهزة ... لان المعلومات الساخنة والطازجة تلتهم وتختفي بسرعة... ولأني بنفسي لا اعرف الحل ... وبالتالي دعنا نعيش المشكلة سوية ونوجهها سوية
    .. )

    الان .. انا شخصيا اريد الصيغة الاولى ...
    يعني

    اريد عرض اسماء الموظفين الذين اسمائهم أربع حروف

    و

    الذين لديهم راتب اضافي أو راتبهم اكبر من 2000 دولار

    بمعنى اخر اريد

    اسم مكون من أربع احرف ... و ... احد الأمرين او كلاهما..
    1- يا راتب فوق 2000 او 2- لديه راتب اضافي


    لاحظ انني استخدمت الصيغة الاولى .. أي انني اريد ان تتم عملية الـ
    OR اولا ....

    اذن ... نجرب هذا الأمر
    ...



    كود:
    select ename ,sal,comm from emp 
    
    where ename like '____' 
    
    and comm is not null or sal >2000 ;

    انظر الناتج :


    كود:
    ENAME SAL COMM
    
    ---------- ---------- ----------
    
    WARD 1250 500
    
    JONES 2975
    
    BLAKE 2850
    
    CLARK 2450
    
    SCOTT 3000
    
    KING 5000
    
    FORD 3000

    لو دققت ...

    و
    تمحصت ..

    وركزت ...

    وتتبعت ...

    و
    انا اعرف انك لم تعمل أي منها ...

    ولكن الذي حدث هو ان
    and بدأت اولا ....

    هل لأنها أتت اولا ؟؟

    يمكن !!

    نجرب لو وضعنا الـ
    OR اولا .. مالذي سيحدث ... اليك جملة الاستعلام التالية

    كود:
    
    
    select ename ,sal,comm from emp 
    
    where sal >2000 or comm is not null 
    
    and ename like '____';
    سوف تكون نفس النتيجة .. هل تصدق !

    لاحظ كيف قلبت الترتيب .. لكي اضمن نفس المفهوم ...

    يعني

    اريد عرض اسماء الموظفين الذين اسمائهم أربع حروف

    و

    الذين لديهم راتب اضافي أو راتبهم اكبر من 2000 دولار

    هي نفسها

    اريد عرض اسماء الموظفين
    راتبهم اكبر من 2000 دولار أو الذين لديهم راتب اضافي

    و

    الذين اسمائهم أربع حروف


    اذا لم تصدق ... ركز فيها .. واذا لم تفهم بالمرة مالذي حدث ... تجاهل الموضوع ...
    قلنا انها نفس النتيجة .. يعني بدأ بالـAND !!
    اذن الـ
    AND هي اولا ... ثم الـ OR
    طيب فكر لو ... انه يوجد
    And مرتين .. ايهما اولا .. ؟؟؟

    هذا هو التحدي السادس .... التحدي هو ان
    تشرح لي بمثال .. من عندك .. لو هناك AND و OR و AND ... مالذي سوف يحدث اولا ؟؟ ولماذا ؟؟


    قلنا قبل قليل انه الـ
    AND اولا ثم الـ OR ....
    لكن انا اريد الـ
    OR اولا .. مالعمل ؟؟


    يا سيدي ... الاقواس هي الحل ,,

    من الان وصاعدا .. تعود ان تضع الاقواس ... بسبب او بدون ’
    ,’,’,’,
    اليك الحل .... جملة الاستعلام هي :
    كود:
    select ename ,sal,comm from emp 
    
    where (ename like '____' ) 
    
    and (comm is not null or sal > 2000 ) ;
    هل شاهدت الاقواس ؟؟

    هل شاهدت اقواس زائدة والتي تضم الجملة (
    ename like '____' ) ؟؟

    بإمكاننا ان ننزعها ... لكن تعود وتمرس الان ان تضعها ... لماذا ؟ لكي تسهل عليك القراءة .. ولكي تفهم المطلوب من الكود .. ولكي تكون مرتاح البال .... ولأني أأمرك بذلك ,,,


    والنتيجة هي :
    كود:
    ENAME SAL COMM
    
    ---------- ---------- ----------
    
    WARD 1250 500
    
    KING 5000
    
    FORD 3000

    هذا ما أردته بالضبط ... يا سلام ,, اسم مكون من أربع احرف ... و ... (احد الأمرين او كلاهما..راتب فوق 2000 او لديه راتب إضافي
    )
    اذا لم تفهم مالذي يدور هنا ... لا تخف .. اقرأ مرة ومرتين .. وثلاث ..
    ( اذا مازلت تعاني ... فأنت من النوع الذي لا يحب القراءة .. او انك تحب أمثلة كثيرة .. او انك لا تريد ان تفهم او ان شرحي لا يناسب عقليتك وخبرتك وطريقة تفكيرك ,, )
    سوف أجرب طريقة أخرى
    ,,
    انظر السؤالين التاليين

    السؤال الأول :

    اريد عرض اسماء و رواتب أساسية وإضافية للموظفين الذين اسمائهم مكونة من أربع احرف و لديهم رواتب اضافية

    أو ان يتم عرض اسماء ورواتب اساسية وإضافية للموظفين الذين رواتبهم اكبر من
    3000 دولار ... وليس لديهم رواتب اضافية


    هل شاهدت السؤال الأول وركزت في طريقة عرضه ... أنا لم اقل سؤال غامض كهذا :

    السؤال الثاني

    اريد عرض اسماء و رواتب أساسية وإضافية للموظفين الذين اسمائهم مكونة من أربع احرف و لديهم رواتب اضافية

    أو الذين رواتبهم اكبر من 3000 دولار ... وليس لديهم رواتب اضافية

    لو شاهدت مثل السؤال الثاني ... فأعرف انه من الخطأ عرضه كهذا
    !!
    من السؤال الأول نستنتج شكل السؤال كما يلي

    (اسماء مكونة من اربع احرف و لديهم رواتب اضافية ) أو (رواتبهم اكبر من 3000 و ليس لديهم رواتب اضافية)

    يا سلام على المنطق
    ,’,’
    اليك جملة الاستعلام يا فتى ,,
    كود:
    select ename , sal , comm from emp 
    
    where 
    
    (ename like '____' and comm is not null ) or ( sal>3000 and comm is null ) ;

    والنتيجة هي :


    كود:
    ENAME SAL COMM
    
    ---------- ---------- ----------
    
    WARD 1250 500
    
    KING 5000

    التحدي السابع ...
    .

    لماذا ظهرت النتيجة السابقة ؟؟ لماذا
    KING و WARD هما اللذان عرضا فقط ؟؟

    اتحداك ان تقنعني لماذا .. أقنعني بطريقتك .. وسوف أحاول فهمك
    !!

    ممممم .. نفسي في كوباتشينو ^^ .... عن اذنك


صفحة 3 من 12 الأولىالأولى 12345678 ... الأخيرةالأخيرة

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •