Advanced Search

المحرر موضوع: شرح مبسط للغة الاوراكل  (زيارة 5143 مرات)

0 الأعضاء و 1 ضيف يشاهدون هذا الموضوع.

مارس 27, 2006, 03:06:36 صباحاً
زيارة 5143 مرات

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« في: مارس 27, 2006, 03:06:36 صباحاً »
السلام عليكم
هذا شرح مبسط للغة الاوراكل نقلته من عدة كتب منها كتاب رائع اسمه مدخل في لغة الاوراكل واسلوب الشرح من عندي وبعضه من الكتاب اي عدلت شوي في اسلوب الشرح
ارجو ان يعجبكم هذا هو الجزء الاول والجزء الثاني قادم بس حبيت اشوف تفاعلكم واذا الموضوع يعجبكم او لا نبدا بسم الله الرحمن الرحيم
اساسها : الاستعلام ، وهو الاستفسار عن بيانات معينة
لغة SQL :
هي اختصار لـ Structured Query Language



لغه الـSQLتعتمد اعتماد كلي على قواعد البينات
فأذا وجدة قاعدة بينات ..استطعنا العمل في هذه اللغه

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

نستخدم الـSQL في :
- انشاء جداول عن طريق لغه تسمى الـDDL
- كما نستطيع ادخال وحذف وتعديل البيانات الخاصه بالجداول عن طريق لغة الـDMT
- واخيراً للحصول على المعلومات من الجداول الموجوده لدينا بسهوله ويسر.

ولان لنبدأ في لغة الـ SQL

نذهب لقائمه ابداء ومنها نختار لغة الـSQL
START-----> SQL PLUS

الصيغه العامه لها :
 

select coulumns name1,coulumns name2,coulumns name3
from table name;l


ولنشرح هذه الصيغه:
1- امر ((select)) هو امر من اوامر لغة الـSQL ويعني التحديد للاعمدة التي اريد عرض صفوفها
2- بعد امر ((select)) نكتب اسماء اعندة الجدول ونفصل بينهم بأستخدام الفاصله العاديه
3- امر ((from)) نستخدمه لمعرفة اسم الجدول الذي نريد عرض صفوفه، ونكتب بعد الـfrom اسم الجدول
مثال عليه :
from salory---------> في حاله اذا كان اسم الجدول الاسعار



ومن الملاحظات الواجب التركيز عليها :
1- (( from, select,Distinct)) نكتبها بالحروف الصغيره او الكبيره (عادي مافيه اشكال )
وهي مهمه في الاستعلام لانها تعتبر الكلمات المفتاحية له (( Key word))
2- لابد من مرعاة الاخطاء الاملائيه باللغة الانجليزيه..
3- لابد من ختم الاستعلام بفاصله " منقوطة" (( ; ))
4- اذا اردنا عرض جميع اعندة الجدول نضع علامة ((*)) بعد امر ((select)) ولا نكتب اسم اي عمود بعدها اطلاقاً
5- في حالة اردنا عرض البيانات بدون تكرار نكتب امر يسمى (( Distinct)) بعد أمر ((select))
وقبل كتابة اسماء الاعمدة

وللتوضيح اكثر دعونا نمثلها في الصيغه العامه السابقه..سوف تكون كالتالي :

 

select Distinct coulumns name1,coulumns name2,coulumns name3....
from table name;



لناخذ مثال :اكتب جمله SQL لعرض بينات جدول الموظفين؟

الحل :
 

select *l
from emp;l

توضيح الحل :
وضعنا (( *)) في الحل لانه طلب عرض البينات كامله ولم يقتصر على شي محدد
((emp)) هنا نقصد فيها اسم الجدول المراد عرض بياناته.


مثال (( 2)) :
اكتب جملة SQL لعرض بيانات ارقام الموظفين واسمائهم ووظائفهم من جدول الموظفين ؟

الحل :
 

select empno, ename, job
from emp;l


توضيح الحل :empno------> المقصود به رقم الموظف
ename------> المقصود به اسم الموظف
job -------> المقصود به نوع الوظيفه

ولانه حدد اسماء الاعمده ولم يذكر البينات بشكل عام
نبداء بطبع المطلوب من الاعمدة مع مرعاة وضع الفاصله " العاديه " بين كل عمود واخر .. وترك العمود الاخير بدون فاصله
كما هو موضح اعلاه
اما بالنسبه للـ ((emp)) فأوضحناها سابقاً وهي : اسم الجدول المراد عرض المطلوب منه.


مثال ((3)) :
اكتب جملة SQL لعرض بيانات جدول الاقسام؟

الحل :
هنا لنحدد المطلوب
1- لعرض بيانات --------> طلب البينات كامله (( يعني نضع SELECT *l))
2- جدول الاقسام--------> حدد لنا نوع الجدول وهو الاقسام ولنرمز له بالرمز Dept
اذا الحل هو :
 

SELECt *l
from Dept;l



دعونا الان ننتقل الى نقطه اخرى من نقاط هذه اللغة
ولنأخذ (( تغير اسماء الاعمدة في جملة الـ SQL))

يمكننا تغير اسماء الاعمدة بأستخدام بغة الـSQL وتظهر الأسماء الجديدة على الشاشه لطباعتها
ولكن لنعلم ان الاسماء الاصليه لا تتغير في ملف الجدول

يوجد ثلاث طرق لتغير الاسماء او عناوين الاعمدة بلغة الـSQL

الطريقه الاولى :بعد أمر (( SELECT)) يكتب الاسم القديم ثم كلمة ((AS)) ثم الاسم الجديد
لنوضح ذلك بالصيغه:
 

SELECT اسم العمود القديم AS الاسم الجديد
FROM اسم الجدول ;


الطريقه الثانيه :
بعد امر SELECT يكتب الاسم القديم ثم تترك مسافه واحدة ثم يكتب الاسم الجديد
لنمثلها بالصيغه :
 

SELECT اسم العمود القديم الاسم الجديد
FROMاسم الجدول ;


الطريقه الثالثه:
نستخدمها في حالة كون الاسم الجديد يحتوي على اكثر من كلمة واحدة.. او يحتوي على مسافات فارغه بين الكلمات
هنا نكتب بعد امر SELECT الاسم القديم ثم نكتب الاسم الجديد ونضعه بين علامتي تنصيص --------> " الاسم الجديد "
ولنوضحة بالصيغه :
 

SELECT اسم العمود القديم " الاسم الجديد "
FROM اسم الجدول ;


ولنأخذ امثله للتوضيح :

الطريقه الاولى :
اكتبي جمله SQL لعرض بيانات اسماء الموظفين وارقامهم ورواتبهم مع تغير اسم عمود الارقام الى (( number))؟
الحل :
 

select ename, empno As number,sal
from emp;


لشرح المثال السابق :
ename-------> عمود الاسماء
empno--------> عمود الارقام ( القديم )
number-------> عمود الارقام الجديد
sal-------> عمود الرواتب
empno As number-----> هنا عملنا تغيير لاسم العمود من empnoالى number بأتباع الطريقه الاولى .


مثال ( للطريقه الثانيه ) :اكتب جملة SQL لعرض بينات اسماء الموظفين،ووظائفهم مع تغير عمود الوظيفه الى empjob؟

الحل :
 

select ename, job empjob
from emp;l


للتوضيح اكثر
job empjob
وضعنا فراغ بين كلمة job وكلمه empjob

مثال ( للطريقه الثالثه ) :

اكتبي جملة الـSQL لعرض بيانات اسماء الموظفين ورواتبهم مع تغير اسم عمود الاسماء الى employee name؟

الحل :
 

select ename "employee nam",sal
from emp;l


للتوضيح :
اسخدما الطريقه الثالثه تحديدا لان تغيرنا كان مصاحب له كلمتين


التعابير الرياضيه في لغة الـSQL
( الجمع((+))، الطرح((-)) ، الضرب((*))، القسمه(( /)) )

لنوضحها بمثال :
ماهو ناتج الجملة التاليه :
 

select emp, ename,job,14*sal+10
from emp;l


الحل :
الناتج هنا يعرض عامود ارقام الموظفين، عمود اسماء الموظفين ، عمود الوظائف،
عمود اخر عبارة وهي عمليه حسابيه
لحساب حاصل ضرب الرواتب *14 ثم إضافة 10 الى الناتج النهائي

للعمليات الحسابيه أولويات كما يلي :

اولا: مابداخل الاقواس
ثانيا: الضرب والقسمه
ثالثا: الجمع والطرح

للمعلوميه:
العمليات التي تجري على البيانات في جملة الـSQL تظهر على الشاشه فقط لطباعتها
ولكن البيانات الاصلية في الجدول لا تتغير بعد تنفيذ العمليات عليه

مثال على ذلك :
ماهي نتيجة تنفيذ الجملة التاليه؟
 

select ename,jop ,10(sal-100)l
from emp;l


الحل :
نعرض عمود الاسماء و عمود الوظائف
وعمود العمليه الحسابيه وهو ( الراتب ناقص 100 وبعدها مضروب في العشره )

مثال اخر :

اكتبي جملة الـSQL لعرض اسماء الموظفين وعرض حاصل ضرب كل راتب بـ10

الحل :
 

Select ename, sal*10
from emp;1



معامل الضم :

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

select اسم العمود الاول //اسم العمود الثاني
from table name;l


مثال :
اكتب جملة الـSQL لعرض بيانات اسماء الموظفين ووظائفهم في عمود واحد- واعطاء اسم جديد لهذا العمود وهو ( employee)
من جدول الموظفين ؟

الحل :
المطلوب :
1- ضم عمود الاسماء وعمود الوظائف
2- تغير اسم العمود الى اسم جديد
اذا ...
 

select ename //job As employee
from emp;l


استخدام حروف نصيه مع معامل الضم :
يمكننا هنا في هذه الخاصيه كتابة اي كلمة بين بيانات الاعمدة في معامل الضم
ولكن يجب وضعها بين حاصرتين علويتين ' ــ '

لنوضحها بأخذ مثال بسيط :
اكتب استعلام بإستخدام الـSQL لعرض اسماء الموظفين والوظائف في عمود واحد ويفصل بينهما كلمة (is)

الحل:

select ename // 'is' //sal

 

from emp;l


الـWhere

نستخدم هنا معاملات ( الاصغر ، الاكبر ، اصغر من او يساوي ، اكبر من او يساوي، يساوي فقط، لا يساوي )
ولنعلم ان الاشارات السابقه تختلف بلغه الكمبيوتر عنها في مسألنا الرياضيه العاديه

ولتوضيح اكثر :
الاصغر تطبع -----> (( > ))
الاكبر تطبع ----> (( < ))
اصغر من او يساوي ((=>))
اكبر من او يساوي -----> ((=<))
يساوي ----> (( ==))
لا يساوي ----> (( !=)) او (( <>))


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

الصيغه العامه للـwher

 

select coulm name
from tablename
where condition;l


شرح الصيغه :

coulm name-----> اسماء الاعمدة
tablename------> اسم الجدول
condition------> الشروط

ولنلاحظ ان الفاصله المنقوطه اصبحت تكتب عند اختتام الشرط بدلاً من اسم الجدول !!

ولنأخذ امثله على ذلك :

اكتب جمله الـSQL لعرض اسماء الموظفين وتواريخ تعينهم الذين تواريخ تعينهم تساوي jan-2000-01

الحل :
المطلوب :
اسماء الموظفين ------> ename
تاريخ التعين -------> hiredate

اذا...
 

select ename,hiredate
from emp
where hiredate = '01-jan-2000';l


معاملات اخرى مقارنه مع لمر الـwhere

1- between.... and------> يستخدم للمقارنه بين قيمتين
2- like----------------->بستخدم للمقارنه بين قيم نصيه

(ولابد من وضع حاصرتين علويتين، نستخدم رمز (%) مع المعامل like
للاستعاضه عن مجموعة حروف غير معلومة
ونستخدم الرمز (-) مع المعامل likeللاستعاضه عن حرف واحد غير معروف)

3- in-------------------> يستخدم ارقام او حروف


امثله متنوعه عليها:

مثال -1-

اكتب بلغة SQL لعرض اسماء ورواتب الموظفين الذين رواتبهم بين الـ13000 و الـ17000؟

الحل :
 

select ename,sal
from emp
;where sal between 13000 and 17000



مثال -2-اكتب استعلام بغله الـSQL لعرض بيانات الموظفين الذين ثاني حرف من اسمائهم (S)؟

الحل :
 

select*l
from emp
where ename like '-S%';l


مثال-3-

اكتبي استعلام بلغة SQLلعرض بيانات الموظفين التالي اسمائهم saude وbasem؟

الحل :
 

select *l
from emp
where ename IN (saud,basem);l





لدمج اكثر من شرط

لابد من توافر مهاملات الدمج (الربط )
و تسمى المعاملات المنطقية.. وهي :
And----> و
Or----> او
Not---> نفي

ولتوضيح اكثر ...لناخذ مثال :
اكتب استعلام بغلة الSQL لعرض اسماء الموظفين الذين ليست راوتبهم بين الـ12000 و الـ21000؟

الحل :

 

select ename, sal
from emp
where sal not between 12000 and 21000;l


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



مع تحياتي اسلحة الطاقه



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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


مارس 28, 2006, 04:27:31 مساءاً
رد #1

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« رد #1 في: مارس 28, 2006, 04:27:31 مساءاً »
هذا الجزء الثاني من الدرس

تحدثنا في الموضوع السابق عن :
نقاط معينه تخص لغة الـ sql
منها...
 

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


وسنتحدث الان عن :
(( الدوال- SQL Functions))
بشكل عام ..

ولكن قبل البدء في الدوال دعونا نتحدث بشكل سريع عن
الترتيب في هذه اللغه ...

الترتيب:
كما هو معروف اما تصاعدياً او تنازلياً
في عمليه الترتيب نستخدم الامر((order by))
نكتب هذا الامر بعد اسم العمود
وهنا يعطينا ترتيباً تصاعدياً( اي يفرز البيانات تصاعدياً)
اما في حالة الفرز التنازلي يضاف امر يسمى الـ (DESC) بعد الامر (order by)
( كما يمكننا في حالة الفرز التصاعدي اضافه الامر (ASC) بعد الامر (order by)

وللتوضيح لنأخذ الامثله التالية :

مثال -1- ( للترتيب التنازلي )
اكتب بلغة الـ SQL استعلام لعرض اسم الموظف والراتب مرتبة البيانات تنازليا حسب الراتب؟

الحل :
 
select ename,sal
from emp
order by sal DESC;l


توضيح الحل :
emp-----> كما اوضحنا سابقاً اسم العمود ( عمود الموظفين )
ename-----> اسماء الموظفين
sal---------> الراتب
order by sal DESC;l----> نوع الترتيب ( وتخصيصه- الراتب )
اذن....
طلبنا الاستعلام عن اسماء الموظفين + رواتبهم
من جدول الموظفين
مرتبه ترتيباً تنازلياً حسب الراتب ;


مثال -2- ( للترتيب التصاعدي )
اكتب استعلام بلغة الـ SQL لعرض اسم الموظف والراتب مرتبة البيانات تصاعديا حسب الراتب؟

الحل :

 

select ename,sal
from emp
order by sal;l


توضيح الحل :
emp-----> كما اوضحنا سابقاً اسم العمود ( عمود الموظفين )
ename-----> اسماء الموظفين
sal---------> الراتب
order by sal ;l----> نوع الترتيب ( وتخصيصه- الراتب )
اذن....
طلبنا الاستعلام عن اسماء الموظفين + رواتبهم
من جدول الموظفين
مرتبه ترتيباًتصاعدياً حسب الراتب;

 




 
الامر group :

فائدته :

في حال اراد مستخدم قواعد البيانات ان يستعلم عن الاقسام مثلا في المؤسسة و من فيها من موظفين

يمعنى انه يريد ان يرى من في الاقسام كلها من موظفين مرتبة حسب القسم

يستخدم الامر group

مثال :

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

الحل :



 

SELECT PNUMBER,PNAME,COUNT
FROM PROJECT,WORKS_ON
WHERE PNUMBER = PNO
GROUP BY PNUMBER,PNAME;l



حيث ان:
PNUMBER هو رقم المشروع في الجدول PROJECT
و PNAME هو اسم المشروع في نفس الجدول
و PROJECT و WORKS_ON هي جداول في قاعدة البيانات

هنا في المثال

النتائج من هذا الاستعلام ستكون كالتالي

رقم المشروع اسم المشروع عدد الموظفين فيه







الامر HAVING

وظيفته :

ياتي غالبا او دائما مع GROUP و هو لكي ناخذ من القروب جزء معين

مثلا : نريد ان نستعل عن الاقسام اللي عدد موظفيها فوق 20 موظف مرتبة في مجموعات ..

نستخدم HAVING

مثال
لكل مشروع يعمل به اكثر من 5 موظفين , اعرض لي رقم المشروع و اسمه و عدد موظفينه الذين يعملون فيه

الحل :

 

SELECT pnumber,pname,count(*)l
FROM project,works_on
WHERE pnumber=pno
GROUP BY pnumber,pname
HAVING count(*) > 5 ;l


هنا نفس السابق حيث انه في السؤال طلب الاستعلام عن رقم المشروع و اسمه و عدد الموظفين ووضعناها في الجملة SELECT
و اختارنها من الجداول اللتي هي موجودة فيها project,works_on
و ربطنا الجدولين بالامر pnumber=pno
و وضعنها في مجموعات باستخدما الامر GROUP BY
و استبعدنا اي مشروع عدد موظفينه اقل من 5 باستخدم الامر






والان لندخل بالدوال ((FUNCTIONS))

بصورة عامه الدالة هي :
هي داله لها اسم وتقوم بوظيفة معينة على البيانات الموجودة ثم تعود لنا بالنتيجة.
ملاحظة ... الداله تاخذ وسيط او اكثر ولكن النتيجة تكون قيمه واحدة فقط‍!

الدوال العددية ..
لناخذ اهمها وهي :
1-Round-------> وظيفتها تقريب الاعداد الكسريه الى اي قيمه عشرية تحدد للدالة
2-Trunc-------> وظيفتها قطع اي جزء عشري من الاعداد الكسرية بدون تقريب .
3- Mod--------> وظيفتها ايجاد باقي قسمة الاعداد الصحيحة.

امثلة عليها :

للداله (Round) :
 

Round(46.977.1)l

الناتج يكون :
46.98

للداله ( Trunc)
 

Trunc(46.977.1)l
الناتج يكون :
46.97

الداله (Mod)
 

Mod(1600.300)l
الناتج يكون :
1000

مثال اخر للتوضيح بشكل سريع :
اكتب استعلام لعرض اسماء ورواتب وعمولة الموظفين وباقي قسمة الرواتب والعمولات للموظفين الذين وظيفتهم 'salesman'؟

الحل :

 

select ename,sal,comm,mod(sal,com)l
from emp
where job= 'salesman';l



توضيح الحل :
1- اسماء الموظفين ونرمز لهم بالرمز ------->ename
2- رواتب الموظفين ونرمز له بالرمز --------> sal
3- عموله الموظفين ونرمز لها بالرمز -------> comm
4- باقي قسمة الرواتب والعمولات -----------> mod(sal,com)l
5- من جدول الموظفين ونرمز له بالرمز -----> emp
6- بشرط ! وهو ان نوجد باقي قسمة الرواتب والعمولات للمظفين الذين وظيفتهم 'salesman'; فقط !



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

الدوال الحرفيه تنقسم الى قسمين ..
أ- دوال التحويل
ب- دوال تناول البيانات

دوال التحويل :
1- lower
2- upper
3- intcap

دوال تناول البيانات وهي :
1- concat
2- substr
3- length
4- instr
5- lpad

ولنأخذ الان كل داله مع شرح مبسط لها :

1- lower-------> تحويل البيانات النصيه من حروف كبيره الى صغيره ( اي من A, الى a)
مثال على ذلك : اكتب استعلام يعرض اسماء الموظفين بحروف كبيره ؟
الحل :
 

select lower(ename)l


2- upper-------> تحويل البيانات النصيه من حروق صغيره الى حروف كبيره ( اي من aالى A)- عكس الـLOWER
مثال على ذلك:
اكتب استعلام يعرض اسماء الموظفين بحروف صغيره ؟
الحل :
 

select upper(ename)l


3- intcap------> تحويل اول حرف من البيانات النصيه الى حروف كبيرة وباقي الكلمه الى حروف صغيره( اي من eqlaاوAQLAالى Aqla)
مثال على ذلك:
اكتب استعلام يعرض اول حرف من الوظيفه بحرف كبير وبقيه الاحرف صغيره؟

الحل :

 

select intcap(job)l



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

1- concat -------->تعني جمع سلسلتين نصيتين في عمود واحد
مثال على ذلك :
اكتب استعلام يعرض عمود الاسماء وعمود الوظائف في عمود واحد؟
الحل :
 

select concat(ename,job)l


2- substr------>تعني عرض حروف معينه من الكلمه تبداء من ارقام محدده
( يعني مثل اقول اطبع لي الكلمه من حرف رقم1 الى الحرف رقم 5 )
مثال على ذلك :
اكتب استعلام يعرض لنا الحروف منالحرف رقم 1 الى الحرف رقم 4؟
الحل :
 

select substr(job,1,4)l

3- length ------>تعني عدد الاحرف المكونه للكلمه
مثال على ذلك :
اكتب استعلام بعرض عدد احرف اسم كل موظف ؟
الحل :
 

select length(ename)l


4- instr------->تحديد مواقع الاحرف( يعني ممكن نحدد حرف نبيه من الكلمه ونقول له وين مكانه من الجمله؟
مثال على ذلك :
اكتب استعلام يوضح موقع الحرف 'Q' من كلمه اقلاع
الحل :
 

select instr(eqla,'q')l


لنأخذ امثله شامله لها :

مثال شامل-1- :اكتب استعلام يعرض اسماء الموظفين لحروف صغيره، واول حرف من الوظيفه كبير وبقية الاحرف صغيرة ،
وعدد احرف اسم كل موظف ، وضم عمودي الراتب والعمولة في عمود واحد ؟

الحل :

 

select lower(ename),initcap(job),length(ename),concat(sal,comm)l
from emp;l



مثال شامل -2- :اكتب استعلام لعرض اسماء الموظفين، واسمائهم ووظائفهم معاً، وعرض عدد حروف اسم كل موظف،:
وعرض موقع الحرف 'A' من اسماء الموظفين للموظفين الذين وظيفتهم SALESMAN؟

الحل :

 

select ename,concat(ename,job),length(ename),instr(ename,'A')l
from emp
where job='salesman';l


ملاحظات على الحل :
وجود شرط فيه !

دوال التاريـــــــــــــ 'DATE FUNCTION' ـــــخ

لمحه سريعه عنها:
يتم تخزين التاريخ في جدول يسمى الـDUAL لذلك يجب ان تتم عملية استرجاع التاريخ من الجدول
المسمى 'DUAL'

ودوال التاريخ هي :
1- الداله ........... SYSDATE
2- الداله ...........DAY_NEXT
3- الدالة ...........DAY_LAST
4- الدالة .....MONTHS_BETWEEN

لنشرحها بالتفصيل :

اولاً : الداله ........... SYSDATE
تعود بنا هذه الداله الى تاريخ اليوم الحالي
والشكل العام لها ....
 

select sysdate
from dual;l


ملاحظه : نلاحظ هنا وضعنا اسم الجدول dual;

مثال :
اكتب استعلام يعرض اسماء الموظفين وتواريخ تعينهم، ثم عرض تاريخ التعين +8 ايام، وعرض التاريخ- 7 ايام،
وعرض عدد الايام من تاريخ تعينه حتى التاريخ الحالي ؟

الحل :

 

select ename,hiredate,hiredate+8,hiredate-7,(sysdate-hiredat)l
from emp;l



2- الداله ...........DAY_NEXT
هذه الدالة تقوم بعرض اول تاريخ تالي للتاريخ المعطى.
الشكل العام لهذه الداله.
 

next_day(datecoloumn,dayname)l
ملاحظه ...
datecoloumn= التاريخ الموجود داخل الجدول ويوضع بين حاصرتين علويتين .
dayname =اسم اليوم المعطى ويجب وضعه بين حاصرتين علويتين.

مثال :
اذا كان التاريخ هو 1981/6/10 وطلب من الجهاز تحديد التاريخ الذي يصادف يوم الجمعه من نفس الشهر؟

الحل :
 

select next_day('10-june-81','friday');l
from dual;l





3- الدالة ...........DAY_LAST

نقصد بها ايجاد اليوم الاخير من كل شهر.

مثال :
اكتبي استعلام لعرض اليوم الاخير من شهر تعيين كل موظف ؟

الحل :
 

select last_day(hiredate)l
from emp;l



4- الدالة .....MONTHS_BETWEEN
نقصد بها ايجاد عدد الاشهر بين تاريخين يتم اعطائهم للدالة .
الشكل العام :
 

MONTHS_BETWEEN (date1,date2)l



ملاحظه ...
date1= التاريخ الاول او اسم العمود
date2=التاريخ الثاني او اسم العمود

مثال :
استعلام يعرض عدد الاشهر بين تاريخ التعيين والتاريخ الحالي ؟

الحل :
 

select MONTHS_BETWEEN( sysdate,hiredate)l
from emp;l



مثال شامل لدوال التاريخ :
استعلام لعرض رقم الموظف، تاريخ التعيين ، عدد الاشهر التي قضاها منذ تاريخ التعيين وتاريخ اول يوم جمعه بعد تعيينه،
واخر يوم من شهر تعيينه للموظفين الذين مر على تعيينهم اقل من 400 شهر ؟

الحل :
 

select empno,hiredate,months_between(sysdate,hiredate),next_date(hiredate,'friday),last_date(hiredate)l
from emp
where month_between(sysdate-hiredate<400);l



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

 

ا



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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


مارس 29, 2006, 03:50:20 مساءاً
رد #2

حاسوبية

  • عضو مبتدى

  • *

  • 6
    مشاركة

    • مشاهدة الملف الشخصي
شرح مبسط للغة الاوراكل
« رد #2 في: مارس 29, 2006, 03:50:20 مساءاً »
مشكور اخوي عالموضوع المفيد  ':111:' وانا قاعدة آخذ في الجامعة عن هذا البرنامج فممكن استفيد منه




مارس 29, 2006, 07:55:50 مساءاً
رد #3

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« رد #3 في: مارس 29, 2006, 07:55:50 مساءاً »
مرحبا بكي في المنتديات اختي الحاسوبيه وانشاء الله نستفيد منك وتستفيدي منا
وشكرا على مرورك الجميل ولكي جزيل الشكر
مع تحياتي اسلحة الطاقه



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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


مارس 30, 2006, 01:47:18 صباحاً
رد #4

bioComputer

  • عضو متقدم

  • ****

  • 746
    مشاركة

  • عضو مجلس الحاسب

    • مشاهدة الملف الشخصي
    • www.c4arab.com
شرح مبسط للغة الاوراكل
« رد #4 في: مارس 30, 2006, 01:47:18 صباحاً »
ما شاء الله عليك اخى اسلحة الطاقه  .. شرح سلس ورائع '<img'>
سقيت من نهر الكوثر ... '<img'>:):)

ولكن لدى ملاحظة بسيطة : هلا قسمت الدرس على عدة ردود حتى يسهل قرائته والتركيز فيه .. وحبذا لو قمت برفع ملف ورد منسق لكل درس ...اكيد ستكون اكثر روعة :rock:

مارس 30, 2006, 10:15:41 صباحاً
رد #5

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« رد #5 في: مارس 30, 2006, 10:15:41 صباحاً »
السلام عليكم
اخي الكريم مشكوووور على  مرورك الجميل والرائع ويعطيك الف عافيه
وياريت اخي العزيز تقولي كيف ارفع ملفات من جهزاي ورد او اكسل او ادوب كروبايد او برنامج ارفعهم من جهازي الى المنتدى لاني تبهدل وانا احاول ارفعهم
ويعطيك الف عافيه
مع تحياتي اسلحة الطاقه



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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


مارس 30, 2006, 10:20:54 صباحاً
رد #6

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« رد #6 في: مارس 30, 2006, 10:20:54 صباحاً »
لسلام عليكم
بعد مراجعتي للدروس السابقه تبين انه سقط سهوا منها نوع من انواع الدوال
الا وهو دوال المجموعات ‍!
ساتحدث عنه بأختصار ..وسأكمل مابقى من هذه اللغه  

دوال المجموعات :

max----> اكبر قيمه
min----> اصغر قيمه
sum----> المجموع
avg----> المتوسط
count--> العدد

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

الحل :

select max(sal),min(sal),avg(sal)l
from emp;l


مثال ثاني :

اكتب استعلام يعرض عدد الموظفين الذين يعملون في القسم رقم ( 25) ؟
الحل :
 

select count(ename)l
from emp
where deptno=25;l


دالة nvl:

هذه الدالة تقوم بتحويل القيم الفارغة الى قيم غير فارغه .

مثال على ذلك :
اكتب استعلام اسم الموظف والراتب والعموله وحاصل ضرب الراتب والعموله
وحاصل جمع الراتب والعموله ؟
الحل:

select ename,sal,comm,sal*comm,sal+comm l
from emp;l


اكتب استعلام يعرض اسم الموظف والراتب والعموله وحاصل ضرب الراتب والعمولة
وحاصل جمع الراتب والعمولة (بحيث لاتظهر القيم الفارغه ) ؟

الحل :
 

select ename,sal,comm,sal*nvl(comm,0),sal+nvl(comm,0)l
from emp;l

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

الصيغة العامه له :

select
اسم الجدول الاول . اسم العمود,الجدول الاول .العمود الثاني , .....الجدول الاول . اخر عمود فيه ,
اسم الجدول الثاني .العمود الاول فيه , الجدول الثاني .العمود الثاني, .... الجدول الثاني .اخر عمود فيه,
from اسم الجدول الاول ,اسم الجدول الثاني ,
where اسم الجدول الاول .العمود المشترك = اسم الجدول الثاني .العموج المشترك;

انواع العلاقات (الربط ) :
1- الربط المتكافئ.
2- الربط الغير متكافئ .

مثـــــــال :

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

الحل :
 

select emp.ename,emp.job,emp.sal,dept.dname,dept.loc
from emp,dept
where emp.deptno=dept.deptno;l

الاستعلام الفرعي(المتداخل ) :
1-داخلي
2-خارجي .

مثال :
اكتبي استعلام يعرض اسماء الموظفين الذين يستلمون (راتب اكبر) من الموظف رقم (98766)؟
الحل :

select ename
from emp
where sal < select sal
from emp
where empno=98766;l

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



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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


مارس 30, 2006, 10:23:37 صباحاً
رد #7

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« رد #7 في: مارس 30, 2006, 10:23:37 صباحاً »
السلام عليكم وهذا الجزء الاخير من الموضوع
جداول :
نستخدم لانشاء الجداول وأضافه بياناته واضافة اعمده وتعديل الجدول كافه لغه الـ ( DDL)

شروط انشاء الجدول :
1- ان لايتعدى طول اسم العمود او اسم الجدول الـ 30 حرف
2- لايجوز استخدام المسافة في اسم العمود او اسم الجدول.

انواع البيانات المدخله في الجدول :
1- رقم number
2- تاريخ date
3- حرف char

الصيغه العامه لانشاء الجدول :create table
اسم الجدول ( اسم العمود الاول نوع البيان( حجمه )،نوع البيان(حجمه )، ...البيان (حجمه ) ) ;

مثال على ذلك :
اكتب جملة لانشاء جدول بأسم (school ) مكون من الاعمدة التاليه :
1- رقم الطالبstno .. وحجمه (10 )
2- اسم الطالب stname.. وحجمه ( 20 )
3-تاريخ ميلاد الطالب stbirthdate.. لايوجد حجم .


الحل :

create table scool (stno number (10 ),stname char (20 ),stbirthdate date);l

ولاضافة بيانات الى الجدول :
الضيغه العامه :

insert into (اسم الجدول )( اسماء الاعمده )
values (value1,value2,value3....value(n))l

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

ولتكن البيانات المراد اضافتها للجدول كالتالي :
1- stno = 3,7,8
2- stname=mona,amal,nora
3- stbirthedate= 04-03-85,02-11-87,01-12-89
 

الحـــــــــل :
 

insert into school (stno,stname,stbirthedate)l
values (3,'mona','04-03-85');l


نضغط على Enter
ونضيف من جديد

insert into school (stno,stname,stbirthedate)l
values (7,'amal','02-11-87');l

نضغط على Enter
ونضيف من جديد

insert into school (stno,stname,stbirthedate)l
values (8,'nora','01-12-89');l

وهكذا الى ان ننتهي من التعبأه
 

اضافه عمود الى الجدول :
الصيغه العامه :
 

alter table اسم الجدول
add (اسم العمود نوع البيانات (الحجم ) );

مثال :
اضف عمود بأسم addressالى جدول schoolمع العلم بأن حجمه = 10؟

الحل :
 

alter table school
add (adress char (10 ) ) ;l

اما لتعديل البيانات :
الصيغه العامه:
 

alter table اسم الجدول
modify ( اسم العمود نوع البيانات (الحجم ) ) ;

مثال :
عدل نوع بيانات جدول school في العمود stnoمن nimber الى بيانات حرفيه ؟

الحل :

alter table school
modify (stno char (20 ));l


ولتغير اسم الجدول نتبع الطريقه التاليه :
rename (الاسم الاصلي ) to (الاسم الجديد ) ;


مثال على ذلك :
حول اسم الجدول من school الى school5

الحل :
 

Rename school To school5;l

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



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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


نوفمبر 23, 2007, 10:20:19 مساءاً
رد #8

صبا

  • عضو مبتدى

  • *

  • 5
    مشاركة

    • مشاهدة الملف الشخصي
شرح مبسط للغة الاوراكل
« رد #8 في: نوفمبر 23, 2007, 10:20:19 مساءاً »
:U]السلام عليكم  ،جوزيت خيرا اخي اسلحة الطاقة شرح جدا رائع
على فكرة  هذاالموضوع كان مطلوب مني بحث في الجامعة  ':203:' والحمد لله وجد الاجابة وفهمت كمان الاشياء الصعبة. بس عندي سؤال  اكيد في فرق بين انواع البيانات في كل لغة يعني نوعها في اوركل بختلف عن الاسسز ياريت اذا كانت عندك الاجابة توضحلي الموضوع مع معرفة خصائص كل نوع وصفاته ولك جزيل الشكر
اللهم لك الحمد

نوفمبر 24, 2007, 09:00:56 مساءاً
رد #9

مروه عثمان رجب

  • عضو خبير

  • *****

  • 1001
    مشاركة

    • مشاهدة الملف الشخصي
شرح مبسط للغة الاوراكل
« رد #9 في: نوفمبر 24, 2007, 09:00:56 مساءاً »
موضوع رائع ومفيد مفيد جدا
جزاك الله كل خير ووفقك دائماً لفعل الخير

لي تعليق بسيط وهو كلمة لغة .. الاوراكل ليست لغه بل قاعدة بيانات بمعنى آخر

هناك العديد من انواع قواعد البيانات من حيث المجانية وطريقة التعامل معها وإمكانياتها
كـ الاوراكل ، الاكسس MySQL- SQLserver
 
اما عن SQL في لغة Script يعني يمكن اعتبارها ايضا لغة بمعنى الكلمة وإنما طريقة للتواصل والتعامل مع قواعد البيانات أياً كان نوعها او طريقة تصميمها مثلا كأنك تتعلم الانجليزية وتتحدث بها في اي مكان لا يهمك اين انت !!!

شكرا لك

نوفمبر 25, 2007, 09:26:45 مساءاً
رد #10

صبا

  • عضو مبتدى

  • *

  • 5
    مشاركة

    • مشاهدة الملف الشخصي
شرح مبسط للغة الاوراكل
« رد #10 في: نوفمبر 25, 2007, 09:26:45 مساءاً »
مشكورة مروة على التوضيح ،على فكرة ما كنت ملاحظة للخطا شكرا انك نبهتيني  ':203:'
اللهم لك الحمد

نوفمبر 05, 2008, 01:41:25 صباحاً
رد #11

اسلحة الطاقه

  • عضو متقدم

  • ****

  • 624
    مشاركة

  • عضو مجلس الكيمياء

    • مشاهدة الملف الشخصي
    • http://al-naaeb.com/up
شرح مبسط للغة الاوراكل
« رد #11 في: نوفمبر 05, 2008, 01:41:25 صباحاً »
مشكورين جميعا على المرور

تحياتي
اسلحة الطاقه



اصعب شئ فى هذا العالم ان ترى اغلى واقرب من تحب يرمي بنفسه فى النار ولا تستطيع عمل شئ لسبب بسيط انه لا يريد منك التدخل
اصعب شئ فى هذا العالم ان تغمض عينيك عن الحق ارضاء لنفسك والنتيجه (اعمي فى كل الاحوال)

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