بتاريخ: 27 نوفمبر 201114 سنة comment_218051 بسم الله الرحمن الرحيم اعترافا وردا للجميل لهذا المنتدي العظيم ولكل أعضاءه المتميذين سوف أبدأ بشرح أوراكل بطريقة علمية للمبتدأين وانا اخص المبتدأين لاني سوف أبدأ بالتسلسل الي ان نصل الي كورسات APPS بإذن الله في منتدي SQL سوف ابدأ بكورسات الخاصة ب SQL وفي منتدي PL/SQL هضع كورسات الخاصة به وكذلك في FORMS,و REPORTS ان شاء الله هيكون كل يوم او يومين درس جديد كورس SQL هيكون مقسم الي 3 أجزاء كالتالي 1- SQL Basic SELECT STATEMENT وهذا الجزء انا بالفعل خلصته وهو موجود هنا http://oracle-sql-tutorials.blogspot.com وبشرح فيه جمل sql الأساسية وشرح بسيط عن مفاهيم قواعد البيانات انا في الحقيقة شرحته باللغة الإنجليزية وال عايز يراجعه يدخل ويشوف وال مش فاهم جزء معين يكتب في التعليق ايميله وعنوان الموضوع ال مش فاهمه وانا هعيد ارساله علي ايميلك مشروح باللغة العربية 2-SQL Data Retrievalهذا الجزء هو ال هبدأ بيه هنا ان شاء الله باللغة العربية 3- SQL DML and DDL تبدأ مع الجزء التاني وهو SQL Data Retrieval (استرجاع البيانات) هنتعرف في هذا الجزء علي كيفية كتابة جملة SELECT لاسترجاع البيانات وازاي نكتب جملة فعالة ومرنة نسترجع بيها البيانات من أكتر من جدول وكمان هنعرف ازاي نعمل كيفية عمل جملة متداخله مع اخري وازاي نخليها جزء لا يتجزأ من الأولي .وانا بافترض هما انك هتكون عارف او عندك معرفه عن SQL و الأساسيات ولو لسه جديد ياريت تراجع الجزء الاول . الجزء ده هنقسمه علي النقاط التالية بالترتيب 1- Display data from multiple tables 2- Group Functions 3- Subqueries 4- Reporting With SQL Plus -------------------------------------------------------------------------------------------------------------------------------------------------------- بسم الله الرحمن الرحيم 1- Display data from multiple tables وهي تعني عرض او استرجاع البيانات من أكتر من جدول كلنا عارفين انه اي قاعدة بيانات علائقية ببتكون من مجموعة من الجداول او TABLES طيب ما دمت فيه عندنا اكتر من جدول يبقي انا محتاج اني اوصل لهذه الجداول وعلشان اوصل لهذه الجداول واسترجع منها البيانات وطالما عايز استرجع البيانات يبقي انا محتاج لطريق او طرق تساعدني ان استرجع هذه البيانات من الجداول الكتيره الموجوده بقاعدة البيانات بتاعتي يبقي انا هنا في الأول محتاج اعرف ماهي الطريق او بما يعرف بالربط او JOIN التي تساعدني علي ان استرجع البيانات . فيه 4 طرق او انواع للربط عن طريقهم اقدر استرجع البيانات من اكتر من جدول بس قبل ما نتكلم علي انواع الربط خليك معايا في المثال التالي علشان نبقي فاهمين احنا بنعمل ايه والدنيا ماشية ازاي في الموضوع ده نفترض انك عايز تعمل قائمة او LIST ببيانات الرقم الوظيفي للموظف ومكانه والقسم ال بيشتغل فيه احنا كده لو ركزنا في المطلوب منك في القائمة هنلاقي ان كل جزء موجود في جدول خاص بيه يعني مثلا EMP NO او الرقم الوظيفي للموظف هنلاقيه في جدول EMP و الموقع او LOC هنلاقيه في جدول DEPT او جدول الأقسام وهنلاقي DEPTNO او رقم القسم مشترك ما بين الجدولين جدول DEPT و EMP طيب احنا علشان نعمل LIST او القائمة او التقرير المطلوب مننا محتاجين اننا نشوف حاجه نربط بيها الجدولين مع بعض علشان نطلع البيانات ونخلص التقرير المطلوب مننا طيب احنا الجزء او العمود المرتبط بين الجدولين هو في الحاله دي عمود DEPTNO يبقي احنا لو ربطنا بين الجدولين هنقدر نطلع البيانات او التقرير المطلوب . يبقي الربط او Join Condition ممكن نقول انه تحديد العلاقه بين البيانات الموجوده في عمودين وبمعرفة هذه العلاقة يتم انشاء الربط في جملة where انواع الربط المعروفه 1- equijoins 2- non - equijoins 3- outer joins 4- Self joins نكمل بكره ان شاء الله تقديم بلاغ
بتاريخ: 28 نوفمبر 201114 سنة كاتب الموضوع comment_218084 بسم الله الرحمن الرحيمنكمل الدرس السابق وهنتكلم علي انواع الربط Join Type بشكل مبسط كتعريف لكل نوع وبعد كده هنتكلم عن كل نوع بشئ من التفصيل و بالأمثلة 1- EQUIJOINويقصد به الربط المتساوي او الربط الداخلي وهو نوع من انواع الربط التي تساعد علي استخراج البيانات من اكتر من جدول لما تكون قيمة في عمود في الجدول الاول تتطابق مع قيمة اخري في عمود من الجدول الثاني وعادة يكون العمودين بينهم علاقة مفتاح الرئيسي و المفتاح الاحنبي PRIMARY KEY & FOREIGN KEY وبنستخدم علامة = في جملة WHERE لتنفيذ هذا النوع من الربط2- NON-EQUIJOINوهي تعرف بالربط غير المتساوي وهذا النوع أيضا يستخدم لاسترجاع البيانات من اكتر من جدول لما تكون القيمة في عمود من الجدول الأول تتطابق بشكل غير مباشر مع قيمة اخري في جدول اخر باستخدام between ,<,>,=<,>=3- Outer Joinبنستخدم هذا النوع من الربط علشان نتأكد ان كل البيانات تم استرجاعها بما فيهم البيانات التي لا تساوي شرط الربط ودائما بنستخدم هذا النوع من الربط مع أنواع الربط السابقة التي تستخدم لإسترجاع البيانات المتطابقة بالإضافة للبيانات الغير المتطابقة باستخدم الربط الخارجي4- Self joinاو مايعرف بالربط الداخلي والمقصود به ربط الجدول بنفسه باستخدام الربط المتساوي و الربط غير المتساوي بمعني اخر يجب ان نتخيل ان الجدول الواحد جدولين وهنشرح الموضوع ده بالتفصيل-----------------------------------------------هنكمل كلامنا عن انواع الربط بشكل من التفصيل 1- EQUIJOINفي هذا النوع من الربط علشان نستخدمه لازم يكون في كل جدول من الجداول ال عايزين نسترجع منها بيانات في عمودين تكون القيم فيهم متساوين ( Primary key and foreign keyعلي سبيل المثال احناا ممكن نعمل ربط بين جدول الموظفينEMP وجدول الأقسام DEPT لأن الجدولين فيهم قيم متساويه وهو رقم القسم DEPTNO فرقم القسم هو مفتاح أساسي في جدول الأقسام ومفتاح اجنبي في جدول الموظفين شوف المثال التالي . SELECT EMP.ENAME,EMP.DEPTNO,DEPT.LOC FROM EMP,DEPT ;WHERE EMP.DEPTNO=DEPT.DEPTNO لاحظ اني كتبت اسم الجدول التابع ليه الحقل ال عايز استرجعه علشان اعرف سيرفر اوراكل من اي مكان يسترجع البيانات او من اي جدول وكمان بتزيد عملية performance لجملة select يتاعتكوكمان علشان تستبعد الغموض في query بتاعك علي سبيل المثاللو انا كتبت الكود بالشكل ده SELECT EMP.ENAME,EMP.DEPTNO,DEPT.LOC FROM EMP,DEPT ;WHERE EMP.DEPTNO=DEPTNO هتلاقي ان الكود بتاعك مش هيتنفذ وهتلاقي الرسالة دي ظهرت ليكORA-0098:column ambiguously definedلاني احنا في جملة الشرط كتبنا where emp.deptno=deptno طيب السيرفر مش هيعرف يقارن بين الاتنين لاني انا محدد له عمود الأقسام في جدول الموظفين يساوي عمود القسم في رسالته دي بيسال عمود قسم في غموض بمعني في اي جدول العمود دهيارب تكون فهمتكمان لو انا حبيت استخدم جملة ORDER BY لازم احدد اسم الجدول التابع ليه العمود ال انا هرتب بيه النتيجه المسترجعهلاني لو مكتبتش اسم الجدول مع العمود هتظهر نفس الرساله السابقة اتمني اني اكون وفقت في الشرح السابق وان شاء الله نكمل بكره لسه فيه بقية للربط المتساوي ونكمل باقي انواع الربط ان شاء الله تقديم بلاغ
بتاريخ: 29 نوفمبر 201114 سنة كاتب الموضوع comment_218123 بس الله الرحمن الرحيم انهارده نكمل الدرس السابق وهو الربط المتساوي الأول هنتكلم عن شروط اضافية للبحث مع الربط المتساوي لان انت لما تسترجع بيانات باستخدام الربط المتساوي تقدر تضيف شروط اضافية مع فقرة WHEREزي AND مثلا متبوعة بالشرط ودائما بتستخدمها بعد عملية الربطعلي سبيل المثال نفترض انك عايز تسترجع بيانات الرقم الوظيفي و الإسم و رقم القسم والمكان للموظف وليكن KING هتكتب الكود التالي . SELECT EMP.EMPNO,EMP.ENAME,DEPT.DEPTNO,DEPT.LOC FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO 'AND ENAME='KING مثال تاني لوحبينا نضيف شرطين للبحث باستخدام OR مع AND SELECT EMP.EMPNO,EMP.ENAME,EMP.SAL,DEPT.DEPTNO FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND (EMP.DEPTNO=10 OR EMP.SAL>1500); هتلاحظ اني بعد AND كاتب باقي الشرط بين قوسين ودا علشان نتأكد اننا استرجعنا النتيجة المطلوبة و الصحيحهطيب احنا لو مكتبناش الشروط دي بين قوسين سيرفر اوراكل هينفذ AND قبل ORاستخدمنا اسم الجدول بجوار كل عمود بنسترجعه علشان نميز كل عمود من اي جدول بنسترجعه بس لو تلاحظ ان اسم الجدول طويل بالإضافة انه هيبقي في استهلاك لل PROCESS طيب ايه رأيك لو اتكلمنا عن الأسماء المستعاره للجدول أو Aliases ماهي الأسماء المستعاره للجدول او Aliasesهو اننا بندي اسم مختصر للجدول وده هيفيد في تبسيط query بتاعك وكمان هيبقي كود sql بتاعك خفيف ومتفاعل مع سيرفر اوراكل تابع معي التركيب لكود SQL مع ALIASES SELECT ALIAS1.COLUMN,ALIAS2.COLUMN FROM TABLE1 ALIAS1,TABLE2 ALIAS2 WHERE ALIAS1.COLUMN=ALIAS2.COLUMN; مثال SELECT E.ENAME,E.HIREDATE,,d.loc from emp e,dept d where e.deptno=d.deptno order by e.name; هتلاحظ انني عملت اختصار لاسم table واستخدمت الإختصار مع كل سجل عايز استرجعه بدل من استخدام اسم الجدول كامل تقديم بلاغ
بتاريخ: 30 نوفمبر 201114 سنة comment_218138 جزاك الله خيرا على الشرح الرائع ولكن اسمح لى بسؤاللماذا لا نبدا من حيث ما انتهى الاخرين المحتوى العربى بحاجه لشرح forms على سبيل المثال وليس الحصراعلم انه يوجد شروحات للفورمز ولكنها ضعيفه جدا ارجو ان تتقبل كلامى وصدقنى لا اقصد اى اساءه ابحث فقط عن الافضل واريد تعلم ما هو جديد تقديم بلاغ
بتاريخ: 30 نوفمبر 201114 سنة كاتب الموضوع comment_218145 جزاك الله خيرا على الشرح الرائعولكن اسمح لى بسؤاللماذا لا نبدا من حيث ما انتهى الاخرينالمحتوى العربى بحاجه لشرح forms على سبيل المثال وليس الحصراعلم انه يوجد شروحات للفورمز ولكنها ضعيفه جداارجو ان تتقبل كلامى وصدقنى لا اقصد اى اساءه ابحث فقط عن الافضل واريد تعلم ما هو جديد أشكرك أخي أحمد علي تعقيبك وأكيد انا عارف انك لا تقصد اي اساءه وطبعا انا متقبل كلامك بس أنا حبيت أبتدي من الأول علشان في ناس أكيد لسه مبتدأين وانا ناوي ان شاء الله أخلص تراك الديفلوبر كامل بس انا شايف ان الأفضل نبدأ من الأول علشان ابقي ملتزم اني اخلص كل جزء كامل مش عايز اكتب جزء هنا ويوم اشرح جزء في القسم التاني ويوم أكسل ما أكتبش حاجة وكمان لاحظ اني كاتب في بداية موضوعي للمبتدأين لان موضوعي بالكامل هيكون للمبتدأين دا علي أساس منهج انا ماشي بيه وناوي اكمله ان شاء الرحمن . اشكرك مره تانية وانتظرني في قسم الفورمز تقديم بلاغ
بتاريخ: 30 نوفمبر 201114 سنة comment_218162 جزاك الله خيرا على الشرح الرائعولكن اسمح لى بسؤاللماذا لا نبدا من حيث ما انتهى الاخرينالمحتوى العربى بحاجه لشرح forms على سبيل المثال وليس الحصراعلم انه يوجد شروحات للفورمز ولكنها ضعيفه جداارجو ان تتقبل كلامى وصدقنى لا اقصد اى اساءه ابحث فقط عن الافضل واريد تعلم ما هو جديد أشكرك أخي أحمد علي تعقيبك وأكيد انا عارف انك لا تقصد اي اساءه وطبعا انا متقبل كلامك بس أنا حبيت أبتدي من الأول علشان في ناس أكيد لسه مبتدأين وانا ناوي ان شاء الله أخلص تراك الديفلوبر كامل بس انا شايف ان الأفضل نبدأ من الأول علشان ابقي ملتزم اني اخلص كل جزء كامل مش عايز اكتب جزء هنا ويوم اشرح جزء في القسم التاني ويوم أكسل ما أكتبش حاجة وكمان لاحظ اني كاتب في بداية موضوعي للمبتدأين لان موضوعي بالكامل هيكون للمبتدأين دا علي أساس منهج انا ماشي بيه وناوي اكمله ان شاء الرحمن . اشكرك مره تانية وانتظرني في قسم الفورمز رد محترم من شخص محترم متوقعتش الرد ده بصراحه وربنا يوفقك ويكرمك ان شاء الله تقديم بلاغ
بتاريخ: 3 يونيو 201411 سنة comment_251480 مجهود طيب اخى الكريم عمادجزاك الله خيرا تم تعديل 3 يونيو 201411 سنة بواسطة mohamedali013 تقديم بلاغ
بتاريخ: 5 يونيو 201411 سنة comment_251587 اخي الكريم عماد انها لا لطف من وانا اقدر لك هذا الروح الطيبة جزاك الله خير وجعله في ميزان حسناتك تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.