الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

الدرس الرابع

Featured Replies

بتاريخ:

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



أخوانى فى الله و الله أنى أحبكم فى الله .... أتمنى ان تكون الأمور على ما يرام و اعرفكم بأن كافة الرسائل التى استلمتها و الحمد لله توحى بأن مستواكم و الحمد لله تمام .. أما بخصوص اخوانى الذين ليس لديهم المستخدم HR فلا حرج ان يستخدموا المستخدم Scott ولكن مع مراعاة ان اسماء الجداول مختلفه فمثلا بدل جدول Employees يكون EMP ... وهكذا....

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

اليوم سوف نتكلم فى درس من أهم الدروس حيت سوف نقوم بشرح الفصل الثالث فى كتاب اوراكل و عنوان هذا الفصل هو:

Using Single-Row Functions to Customize Output



فى البدايه يجب تعريف الداله ( Function ) و ما معناها

Function: عبارة عن دالة تقوم أنت بإعطائها المدخلات وتقوم الدالة بإجراء معين حتى تسترجع لك النتيجة. اذا الداله لابد ان تسترجع قيمه (Return Value )
- ولكننا نطلق على المدخلات هذه اسم هو Argument. ويمكن للدالة أن تستقبل منك Argument واحدة أو أكثر حسب نوع الدالة نفسها. وفى هذا الفصل نتحدث عن أنواع الدوال حيث تنقسم الدوال إلى:-

1)Single Row Fun: هذا النوع من الدوال يسترجع قيمة واحدة لكل صف على حدا.

مثال: إذا أردت أن أقوم مثلاً بالاستعلام عن اسم الموظف على ان يكون كافة الحروف صغيرة أى small .. هنا سوف استخدم داله وهذه الداله سوف تسترجع نتيجة واحده لكل اسم أى كل صف و النتيجه عباره عن اسم كل موظف و لكن الحروف Small

2)Multiple Row Function: نطلق عليها أيضاً اسم Group Function وهذا النوع من الدوال يقوم باسترجاع قيمة واحده فقط لمجموعة من صفوف.

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

أخوانى الأعزاء : الفصل الثالث بأكمله يتحدث عن النوع الأول من الدوال وهو
Row Single أما الفصل الرابع يتحدث عن النوع الثانى وهو الـGroup Function .

** ما هى الصيغه لكتابة اى داله :


function_name [(arg1, arg2,...)]



** تنقسم الدوال من النوع Single Row إلى:

1)Character Function وتنقسم إلى نوعين:

( أ ) Case – Manipulation Fun.
( ب ) Character Manipulation Fun

2) Number Function.

3) Date Function

4) Conversion Function

5) General Function


أولاً: Case Manipulation Function
------------------------------------------
-1- الدالة lower: تقوم بتحويل الحروف إلى small

مثال:

Select	  lower(last_name),slary
From 	  Employees;



اذا النتيجه هنا تكون اسماء الموظفين و لكن ليس كالعاده و اول حرف فى الأسم capital و لكن اى اسم يظهر يكون Small. و لكن ماذا تفعل اذا اردت البحث عن اسم الموظف بحروف small ؟؟

Select	 last_name, salary
From		Employees
Where lower(last_name) = 'abel';



اعتقد الأن انك فهمت ما الهدف من هذه الداله ..

2- الدالة upper : هى عكس الداله lower فهى تقوم بتحويل الحروف إلى CAPITAL

مثال:

Select	  Upper(last_name),slary
From 	  Employees;

Select	 last_name, salary
From		Employees
Where Upper(last_name) = 'ABEL';



3- الدالة Initcap: تقوم بتحويل أول حرف من كل كلمه إلى CAPTIAL وباقى الكلمة إلى small
مثال:

Select 	Initcap('sameh bakkar')
From 	dual;



لاحظ ان جدول Dual عباره عن جدول وهمى يوجد مع اوراكل و هذا الجدول نقوم فيه بالتجربه فقط...


ثانياً: Character Manipulation Fun

1-الداله Conact : هل تتذكر موضع الـConcatenation Bar ( || ) هذه الداله بها نفس الأثر فهى تقوم بدمج عمودين. ولكن فى الغالب نستخدم ال || .

مثال: اذا اردت استرجاع اسم الموظف الأول و معه اسم الموظف الثانى فى عمود واحد..


Select		concat(last_name ,firat_name) as "Full_Name"
From		employees;



سوف تجد ان النتيجه واحد اذا استخدمت ال || ولكن لاحظ ان دالة Concat تأخذ فقط منك قيمتين
(2 Arguments ONLY )ولذلك اذا اردت وضع مسافه مثلا بين الأسمين هذا يتطلب ان تقوم بعمل داله مركبه كما سنشرحها فيما بعد...

2-الداله Substr: أنا فى رأى الخاص وبخبرتى المتواضعة أرى أن هذه الداله من أهم الدوال وقد أنجزت معى أعمال كثيرة جداً.

هذه الداله نفترض معاً مبدئياً انها تقوم باستقطاع جزء من الكلمة او العمود حسب المعطيات.

مثال:

Select 	substr('sameh bakkar',1,5)
From 	Dual;


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


3-الداله Lenghth: تقوم باسترجاع عدد حروف الكلمة أو العمود.

مثال:

Select 	Length('sameh bakkar')
From 	Dual;




4-الداله Instr: تسترجع موقع الحرف بالكلمة بمعنى أن هذا الحرف الذى قمت انت بتحديده هل هو الحرف الأول أم 2 أم 3 ......... الخ
مثال:

Select 	instr('sameh bakkar','s') as " S or Not"
From 	Dual;



5-L pad- R Pad وضع علامات على اليمين أو اليسار بدل الفراغات.

مثال:

Select 	Rpad(salary,10,'*') as SAL
From 	Employees;



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


6-الداله Replace: تقوم باستبدال حرف بأخر.

مثال:

Select	REPLACE('JACK and JUE','J','BL') as "new word"
From		Dual;



7-الداله Trim: تستقطع الحرف الأول من الكلمة أو الأخر أو كلاهما.

مثال:

Select 	Trim('s' from 'sameh bakkar')
From dual;

Select 	Trim('s' from 'sys')
From dual;



ثانياً: دوال الأرقام Number Function.
-------------------------------------------------

1)الداله Round: تقوم بتقريب القيمة

مثال:

SELECT 		ROUND(45.923,2), ROUND(45.923,0),
   			ROUND(45.923,-1)
FROM   		DUAL;



فى المعادله الأولى النتيجه هى 45.92 لماذا؟ قف عند العلامه و قم بالعد رقمين جهة اليمين سوف تجد ان 92 و طبعا رقم 3 ليس اكبر من 5 لهذا لا يتم التقريب.

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

أما المعادلة الثالثه سوف نقوم بالعد فى الأتجاه العكسى بمعنى من اليسار و ليس من اليمين وسوف نواجه اول رقم و هو 5 و يتم تقريبه الى 10 اذا النتيجه هى 50.


2)الداله : TRUNC هى عكس التقريب فهى تقوم بقطع ما بعد العلامه.

مثال:


SELECT 		TRUNC(45.923,2), TRUNC(45.923),
			  TRUNC (45.923,-1)
FROM   		DUAL;



3)الداله MOD : تقسم رقم على آخر وتسترجع باقى القسمة.

مثال:

Select		MOD(5,4)
From			Dual;



رابعاً: دوال التاريــخ
-------------------------------------

-الداله Sysdat: تقوم باسترجاع تاريخ اليوم.

مثال:

Select 	Sysdate
From		Dual;



ويمكن عمل عمليات حسابيه على التاريخ كما يلى:


SELECT		 last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM		   employees
WHERE		  department_id = 90;




الداله Months_Between: تقوم هذه الداله باسترجاع عدد الشهر بين تاريخين.

مثال:

Select		MONTHS_BETWEEN('01-SEP-95','11-JAN-94') "Date"
From		 dual;




الداله Add_months: تقوم بإضافة شهر أو أكثر على تاريخ محدد.

مثال:

Select 		ADD_MONTHS ('11-JAN-94',6)
From		 dual;




الداله Next_day: تسترجع اليوم التالى لتاريخ محدد.
مثلاً:
لو اليوم 10/11/2007 وأنا أريد أن اعرف أول يوم خميس بعد هذا التاريخ هنا نستخدم داله Next day كما يلى:-

Select 		 NEXT_DAY   ('01-SEP-95','FRIDAY')
From		 dual;




الداله Last- day: تسترجع أخر يوم من الشهر للتاريخ المحدد.


مثال:

Select		   LAST_DAY   ('01-FEB-95')
From		 dual;




سوف نتوقف هنا و نستكمل الدرس القادم ... الفصل الثالث كبير شويه لذلك سوف اقسمه على درسين... يبقى لنا :
*** Conversion Function
*** General Function

المرفقات:
-- الفصل الثالث من كتاب اوراكل. ( ذاكر فقط الجزء الذى تم شرحه )
-- الواجب حل التمارين الأتيه: من التمرين رقم 1 الى التمرين رقم 8 .

لاحظ عشان تحل الواجب افتح ملف ال powerpoint ثم من قائمة view أختار notes Page وسوف تجد التمارين فى أخر الملف...

Les03.zip

بتاريخ:

thanxxxxxxxxxxxxxxxxxxx

بتاريخ:

شكرا لك اخي الفاضل وبارك الله فيك

بتاريخ:

ممتاز والله بارك الله فيك

بتاريخ:

شكووووووووووووووووووووووووووووور
ويعطيك الف الف الف عافية
على الدرس

تم تعديل بواسطة A-M-D

بتاريخ:

الله يعطيك العافيه يا مهندس سامح

درس حلو مثلك :D

سكربت المستخدم hr لمن فقده ,,

في المرفقات ..

----

Script_user_HR.zip

بتاريخ:

تصحيح بسيط أخي سامح ..

قلت في هذا الكود

SELECT		 ROUND(45.923,2), ROUND(45.923,0),
			   ROUND(45.923,-1)
FROM		   DUAL;



ان في المعادله الثالثه يكون الناتج 50 والاصح هو 40

معذوور اخي سامح :D

كل الشكر والتقدير لك ..

تم تعديل بواسطة ra7l

بتاريخ:
  • كاتب الموضوع

الأخ ra7l .... لا تعليق كل ما سوف افعله اننى سوف اكتب لك نتيجة الكود الذى ذكرته انت :D

SQL> SELECT		 ROUND(45.923,2), ROUND(45.923,0),
 2					 ROUND(45.923,-1)
 3  FROM		   DUAL;

ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
--------------- --------------- ----------------
	  45.92			  46			   50

SQL> 



ها يا أخى ؟؟؟ النتيجه 40 أم 50 ؟؟؟

بتاريخ:

ههههههههههههههه نبي نكحلها اعميناها ..

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

انا استخدمت الداله trunc بدل round

الظاهر تأثير السهر أثر بي ,, :lol:

مره ثانيه آآآآآآآآآسف

:D

بتاريخ:

لازلنا متابعيين معك استاذي الكربم
وشكرا على جهودك .....بارك الله بك

  • بعد 1 سنة...
بتاريخ:

بشمهندس هناك غلطه بسيطه فالكوود بتاع Round
أن نتيجة التانية 46 وشكرا

SQL> SELECT ROUND(45.923,2), ROUND(45.923,0),
2 ROUND(45.923,-1)
3 FROM DUAL;

ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1)
--------------- --------------- ----------------
45.92 46 50

  • بعد 1 سنة...
بتاريخ:
الله يعطيك العافيه يا مهندس سامح

درس حلو مثلك B)

سكربت المستخدم hr لمن فقده ,,

في المرفقات ..

----

Script_user_HR.zip

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.