DML لغة التعامل مع البيانات

 

المعاملات المنطقية

أمثلة على استخدامات المعاملات المنطقية

تقوم هذه الجملة بطلب بيانات الموظفين الذين هم من مدينة الرياض ومنصبهم في منصب مدير

Select ename , age , job , city where city = ‘ Riyadh’ and job = ‘Manager’ ;

تقوم هذه الجملة بطلب بيانات الموظفين الذين هم من مدينة الرياض أو مدينة جدة

Select * From emp where city = ‘Riyadh’ or city = ‘jeddah’;

تقوم هذه الجملة بطلب جميع بيانات الموظفين ماعدا الذين هم من مدينة جدة

Select * From emp where Not city = ‘Jeddah’;

شرح مبسط للمعاملات

قد تختلط هذه المعاملات على البعض لذا يجب أن نقوم بشرحها لكي يتم إجادة استخدامها والتعامل معها

 

city = ‘ Riyadh’ and job = ‘Manager’

يجب تحقق الشرطين في هذا المعامل لكي يتم الحصول على البيانات تعمل عمل حرف و

city = ‘Riyadh’ or ‘jeddah’

يجب تحقق أحد الشرطين لكي يتم الحصول على البيانات تعمل عمل كلمة أو

Not city = ‘Jeddah’;

يجب على النتائج ألا تحتوي على هذه البيانات المحددة تعمل عمل كلمة ماعدا

في هذه الجملة سوف نقوم بالقيام بإنشاء جملة استعلام متداخلة تحتوي على جميع هذه المعاملات الرياضية

Select * From emp where city = ‘Riyadh’ or city = ‘jeddah’ and job = ‘Manager’ and not age = ‘35’;

هذه الجملة تقوم بطلب جميع بيانات الموظفين الذين يسكنون في مدينة الرياض أو جدة ومناصبهم في مناصب مدير وأعمارهم لا تساوي خمس وثلاثين سنة


المعاملات الرياضية

 

أمثلة على استخدامات المعاملات الرياضية

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

مثال

(4*5)/5 +8 – 4 = 8

فهنا العمليات الرياضية تتبع الأتي في سيرها

أولا فك الأقواس

ثانيا عمليات الضرب والقسمة حسب التسلسل

ثالثا عمليات الجمع والطرح حسب التسلسل

في هذا المثال سوف نقوم بتوضيح كيفية التعامل مع هذه المعاملات في جمل الاستعلام

Select ename , sal + comm From emp;

في الجملة السابقة تم طلب اسم الموظف بالإضافة إلى مجموع راتبه و النسبة التي يحصل عليها

Select ename , (sal + comm ) * 12 From emp;

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

Select * From emp where comm = (20 * sal)/100 ;

في الجملة السابقة نقوم بالاستعلام عن الموظفين الذين حصلوا على نسبة عشرين في المائة من أصل رواتبهم الحالية


معاملات المقارنة

أمثلة على استخدام معاملات المقارنة

=

تستخدم للمساواة بين قيمتين

>

أكبر من

<

أصغر من

>=

أكبر من أو يساوي

<=

أصغر من أو يساوي

<>

لا يساوي وهي مثل معامل not

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

Select enam ,sal From emp where sal > 1500;

في الجملة السابقة تم طلب بيانات الأشخاص الذين تتعدى رواتبهم ألف وخمسمائة ريال

Select ename , sal From emp where sal > 1500 and comm < 50 ;

في الجملة السابقة تم دمج معاملين رياضيين مع معامل منطقي وهذه المثال يقوم بطلب بيانات الموظفين الذين رواتبه أعلى أف وخمسمامئة ونسبته أقل من خمسين


معاملات الدمج

معامل الدمج

يستخدم معامل الدمج كمعامل للدمج بين سلسلتي محارف وهو مثل معامل & في لغة فيجوال بيسك

 

Select ename || ‘ salary = ‘ || sal From emp;

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

Select ename || ‘ ‘ || lastename From emp;

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

 


معاملات الفرز

معاملات الفرز

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

Desc

ترتيب تنازلي

Asce

ترتيب تصاعدي

تستخدم هذه المعاملات مع معامل الفرز

Order By

 

Select ename , sal From emp order by city;

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

Select ename , sal From emp order by city ,age Desc;

هذه الجملة هي نفس الجملة السابقة ماعدا أننا قمنا بإضافة قسم أخر للفرز عليه وهو الفرز على حسب العمر بالنسبة للفرز على حسب فئة مدينة معينة والترتيب هنا ترتيبا تنازليا أولا على اسم المدينة ثم ترتيبا رقميا تنازليا أيضا العمر

 


معامل التشابه 

معامل التشابه

like

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

مثال

القرص الصلب

بيانات SQL

Dir A*

Like ‘A%’

Dir A*BBB

Like ' A% BBB’

Dir *abcd

Like '%abcd’

Dir a*bb*s

Like '%a%bb%s'

 

أرجو أن تكون الصورة المبدئية لوظيفة هذا المعامل قد وضحت وسوف نقوم بتدعيم هذا الفهم بأمثلة

 

Select * From emp where ename like ‘%m’;

في هذا المثال قمنا بطلب بيانات الموظفين الذين تنتهي أسمائهم بحرف M

 

Select * From emp where ename like ‘a%’;

في المثال السابق قمنا بطلب بيانات الموظفين الذين تبدأ أسمائهم بحرف A

 


معاملات التأكيد

معامل عدم وجود بيانات

يستخدم هذا المعامل لتحديد بيانات بناء على خلو حقل معين سواء كان رقميا أو نصيا

 

Select ename From emp where comm is null;

في المثال السابق قمنا بطلب أسماء الموظفين الذين ليس له أي عمولات

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

Nvl

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

Select ename , (sal + comm )*12 From emp;

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

Select ename , (sal + nvl(comm))*12 From emp;

وفي هذه الجملة سوف يظهر الموظفين حتى وان لم يكن في رصيدهم أي مبلغ


معاملات المحارف 

دوال المحارف

هذه الدوال هي دوال ممتعة و مفيدة جدا في الحقيقة فقد يتساءل البعض عن فائدتها ولذلك سوف أقوم بضرب مثال في حال تود أن تقوم في عدم إجبار المستخدم على التحويل ما بين الأحرف الصغيرة والأحرف الكبيرة وأنت تحتاج في عملك لتدقيق هذه الأحرف فيمكنك عمل ذلك بعد أن يقوم المستخدم بإدخال البيانات دون أي تدخل منه وبذلك تكون قد قمت بتنسيق الكلمات تنسيقا دقيقا كما أنك وفرت من وقت الإدخال لكي يقوم المستخدم بالتحويل بين الأحرف الكبيرة والأحرف الصغيرة وكما أن الاستعلام عن بيانات نصية يجب أن يكون دقيقا بالنسبة لحالة الأحرف ولذلك يمكن تحويل الأحرف عند الاستعلام للحصول على البيانات التي تري

Lower

تصغير جميع أحرف السلسلة النصية تعمل عمل Lcase

Upper

تكبير جميع أحرف السلسلة النصية تعمل عمل Ucase

Initcap

تبديل كل الأحرف الأولى من كل كلمة إلى أحرف كبيرة

أمثلة على هذه الدوال

Select * From emp where lower(ename) = “mohammed”;

نقوم بالبحث عن جميع الموظفين الذين أسمائهم هي محمد وللتأكيد جعلناها صغيرة فمن الممكن أن يكون أحد مدخلي البيانات قد أخطأ في تحويل حالة الأحرف عند الإدخال

Select * From emp where upper(ename) = “MOHAMME”;

 

Select * From emp where lower(ename) = “Mohammed”;

الجملتين السابقتين لهما نفس العمل مع توضيح الفرق في حالة الأحرف

 


معاملات معالجة الحروف

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

 

Concat

لدمج سلسلتي محارف مثل || و مثل &

Substr

تقوم بقطع عدد محدد من الحروف من سلسلة المحارف

Instr

تقوم بإعطائك موقع حرف محدد

Length

تقوم بإعطائك عدد حروف سلسلة المحارف

Lpad

تقوم بدمج سلسلة معينة بعدد معين بسلسلة أحرف إلى اليسار

Rpad

تقوم بدمج سلسلة معينة بعدد معين بسلسلة أحرف إلى اليمين

سوف نقوم هنا بإعطاء مثال عن كل معامل من المعاملات السابقة

Select concat(ename,lastename),city From emp;

قمنا هنا بدمج الاسم الأول مع الاسم الأخير للبيانات المطلوبة

Select ename , substr(city,1,3) From emp;

فمنا هنا بطلب بيانات الموظفين مع تبين رمز يحتوي على الثلاثة الأحرف الأولى من اسم كل مدينة مثل

Ria , Jed , Dam

Select instr(ename,’a’) From emp;

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

Select length(ename) From emp;

يقوم هذا المثال بتحديد طول كل اسم من أسماء الموظفين

Select ename , lpad (sal,1,’%’) From emp;

قمنا بدمج القيمة المئوية مرة واحدة ليسار الراتب في جملة الاستعلام

Select ename ,rpad(sal,1,’SR’) From emp;

قمنا بدمج نوع العملة ريال سعودي إلى اليمين من رواتب الموظفين في جملة الاستعلام

قد تكون الأمثلة السابقة أمثلة غير عملية ولكنها تقوم بتعريف الإمكان من كيفية التعامل معها وسوف تكون هذه المعاملات ذات فائدة كبيرة عندما تقوم باستخدامها في لغي الإجراءات الخاصة بلغة الاستعلامات الخاصة بأوراكل

توضيح

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

مثال

Select concat (concat (rpad(ename,1,’@’),job) ,’.oracle4arab.com’) From emp;

هذا المثال مثال عملي فأنه يقوم بتكوين بريد إلكتروني لكل موظف مبنيا على اسمه و المهنة الذي يقوم بها وربطها بعنوان اسم الشركة

 

النتائج مثل

Mohammed@manager.oracle4arab.com

Salem@sales.oracle4arab.com

 


معاملات الأرقام 

دوال الأرقام

Round

Trunc

Mod

Sin

Cos

Tan

Avg

Max

Min

Sum

Count

Stddev

Variance

يقوم بعملية تقريب الأرقام العشرية

يقوم بإرجاع عدد معين من الخانة العشرية

يقوم بإرجاع باقي القسمة

الوظيفة جا

الوظيفة جتا

الوظيفة ظا

عملية المتوسط الحسابي

إعطاء القيمة العظمى

إعطاء القيمة الصغرى

إعطاء المجموع

إعطاء عدد السجلات

دالة الانحراف المعياري

دالة التشتت

هذه الأمثلة عن كل من الوظائف التالية لكي يتم التعريف بها

 

Select ename , sal , Round(comm,2) From emp;

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

Round(22.329,2) = 22.33

Select ename , sal , Trunc(Comm,2) From emp;

في المثال السبق قمنا باقتطاع خانتين من الخانات العشرية دون تقريب وهو مثل

Trunc(22.329,2) = 22.32

 

Select ename , mod(sal,comm) From emp;

في المثال السابق سوف يتم إعطائنا باقي قسمة الراتب على العمولة وهو مثل

Mod(10,3) = 1 :- (3*3)+1 = 10

 

Select Sin(sal) From emp;

في المثال السابق قمنا بطلب جيب الزاوية للراتب جا

Select Cos(sal) From emp;

في المثال السابق قمنا بطلب جيب تمام الزاوية للراتب جتا

Select Tan(sal) From emp;

في المثال السابق قمنا بطلب ظل الزاوية للراتب ظا

Select Avg(sal) From emp;

في المثال السابق قمنا بطلب المتوسط الحسابي للرواتب

Select Max (sal) From emp;

في المثال السابق قمنا بطلب أعلى قيمة بين الرواتب

Select Min(sal) From emp;

في المثال السابق قمنا بطلب أقل قيمة بين الرواتب

Select sum(sal) From emp;

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

Select Count(ename) From emp;

في المثال السابق قمنا بعد مجموع السجلات الموجودة في جدول الموظفين والتي تحتوي على أسماء

Select Stddev(sal) From emp;

في المثال السابق قمنا بتحديد الانحراف المعياري للراتب

Select Variance(sal) From emp;

في المثال السابق قمنا بتحديد مقدار التشتت للراتب

 


معاملات التاريخ 

دوال التواريخ

تمكنك دوال التواريخ الخاصة بأوراكل والتي تعتبر من أقوى الدوال الخاصة بالتواريخ من أي لغة أخرى وللتواريخ فوائد كبيرة واستخدامات كبيرة على سبيل المثال تحديد انتهاء مدة الصلاحية لمستخدم ما كما حساب الإنترنت أو لتحديد بيانات معينة في العمليات الإحصائية إلى أخره من العمليات التي يعتبر التاريخ بها عنصر أساسي

Add_Monthes

يبين عدد الأشهر بين تاريخين معينين

Montes_Between

يقوم بإضافة شهر إلى تاريخ معين

Next_Day

يقوم بتحديد اليوم الذي يلي التاريخ المعين

Last_Day

لإعطاء أخر يوم من شهر في تاريخ محدد

Round

يقوم بالبحث عن تاريخ مشابه لتاريخ محدد

Trunc

يقوم بالبحث عن تاريخ مشابه لتاريخ محدد

سوف يتم إعطاء أمثلة عن كل من الدوال السابقة والخاصة بالتواريخ

هناك أحد الدوال الخاصة بأوراكل والتي يمكن تنفيذ بها استعلامات التواريخ كما يمكن المقارنة بينها وبين تواريخ أخرى كما يمكنك الاستفادة منها في إضافة البيانات إلى حقول التواريخ وهي تاريخ النظام الحالي والقائم على ساعة الحاسب والمعرفة لديه

Sysdate = System Date

Select ename , months_between(sysdate,hiredate) From emp;

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

Select add_months(hiredate,3) , hiredate From emp;

قمنا بإضافة عدد ثلاثة أشهر لتاريخ تعيين كل موظف

Select next_day(hiredate,’Monday’) From emp;

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

Select last_day(sysdate) From emp;

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

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

ملاحظة

يجب وضع هذا الموضوع في الحسبان عند عمل أي من العمليات على التواريخ

التاريخ + رقم = تاريخ

التاريخ – رقم = تاريخ

التاريخ + تاريخ = رقم

 

 


معاملات التغيير 

تغيير أنواع حقول البيانات

 

بإمكانية أوراكل التبديل بين أنواع الحقول المختلفة كما يمكن ذلك في أي لغة بعملية معينة وهذه الأنواع التي يمكن تبادلها فيما بينها هي

Char to Number

من نصي إلى رقمي

Char to Date

من نصي إلى تاريخي

Number to Chare

من رقمي إلى نصي

Date to Chare

من تاريخي إلى نصي

 

كما أن هذه العمليات هي

 To_Char

حول إلى نص

 To_Number

حول إلى رقم

 To_Date

حول إلى تاريخ

هذه أمثلة على الدوال السابقة تقوم بتبيان كيفية التعامل معها

Select ename ,To_Char(Sal) From emp;

في المثال السابق قمنا بتحويل حقل الراتب من حقل رقمي إلى حقل نصي 

Select ename , To_Char(hiredate,’dd/mm/yyyy’) From emp;

في هذا المثال نقوم بتحويل الحقل التاريخي إلى حقل نصي محدد

كما يمكن تحويل باقي الأمثلة على غرار نفس الطريقة السابقة وهي أمثلة غير عملية ولكنها تقوم بتوضيح كيفية التعامل مع الدوال داخل جملة استعلام

 


معامل الشرط 

دالة الشرط

تقوم هذه الدالة بعمل عمل الجمل الشرطية الموجودة في جميع اللغات والتي عادة ما تكون هيئتها على

If xxxxx Then

    Xxxxx

Else if

    Xxxxx

End If

وسوف نقوم هنا بوصفها في مثال عملي على الطريقتين لكي يتم فهمها بصورة واضحة كفيلة بتحقيق الهدف المنشود

 

if Job= “Manager” then

Sal = Sal + ((sal * 30)/100)

Else if job = “Sales” then

Sal = Sal + ((sal *10)/100)

End if

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

 

Select ename , Decode(job,’Manager’,sal+((sal * 30)/100),’Sales’,sal + ((sal * 10)/100),Sal) NewSal From emp;

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

 


تم الإنتهاء من شرح المعاملات والدوال المستخدمة في جمل الإستعلام