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
دوال الأرقام
|
|
هذه الأمثلة عن كل من الوظائف التالية لكي يتم التعريف بها
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;
وبذلك نكون قد وضحنا صورة كفيلة بتعلم كيفية استخدام الجمل الشرطية في جمل الاستعلام
تم الإنتهاء من شرح المعاملات والدوال المستخدمة في جمل الإستعلام