كما هو الحال في معظم لغات البرمجة، لدى SQL وظائف لمعالجة البيانات. تجدر الإشارة إلى أنه، على عكس عبارات SQL، فإن الوظائف ليست موحدة لجميع أنواع أنظمة إدارة قواعد البيانات، أي أنه لتنفيذ نفس العمليات على البيانات، فإن أنظمة إدارة قواعد البيانات المختلفة لها أسماء وظائف خاصة بها. وهذا يعني أن كود الاستعلام المكتوب في أحد أنظمة إدارة قواعد البيانات (DBMS) قد لا يعمل في نظام آخر، ويجب أخذ ذلك في الاعتبار في المستقبل. ينطبق هذا في الغالب على وظائف معالجة القيم النصية وتحويل أنواع البيانات ومعالجة التواريخ.
تدعم معظم أنظمة إدارة قواعد البيانات مجموعة قياسية من أنواع الوظائف، وهي:
يحتوي تطبيق SQL في MS Access على الوظائف التالية لمعالجة النص:
وظيفة | وصف |
---|---|
Left() | تحديد الأحرف الموجودة في النص من اليسار |
Right() | تحديد الأحرف الموجودة في النص الموجود على اليمين |
Mid() | تحديد الأحرف من منتصف النص |
UCase() | تحويل الأحرف إلى حالة كبيرة |
LCase() | تحويل الأحرف إلى حالة صغيرة |
LTrim() | يزيل كافة الأحرف الفارغة الموجودة على يسار النص |
RTrim() | يزيل كافة الأحرف الفارغة الموجودة على يمين النص |
Trim() | يزيل كافة الأحرف الفارغة من كلا جانبي النص |
لنقم بتحويل أسماء المنتجات إلى أحرف كبيرة باستخدام الدالة UCase():
Run SQLSELECT Product, UCase(Product) AS Product_UCase
FROM Sumproduct
دعونا نفصل الأحرف الثلاثة الأولى في النص باستخدام الدالة LEFT():
Run SQLSELECT Product, LEFT(Product, 3) AS Product_LEFT
FROM Sumproduct
تم تصميم وظائف معالجة الأرقام لإجراء عمليات رياضية على البيانات الرقمية. تم تصميم هذه الوظائف لإجراء العمليات الحسابية الجبرية والهندسية، لذا يتم استخدامها بشكل أقل بكثير من وظائف معالجة التاريخ والوقت. ومع ذلك، تعتبر الدالات الرقمية هي الأكثر توحيدًا في جميع إصدارات SQL. دعونا نلقي نظرة على قائمة الوظائف العددية:
وظيفة | وصف |
---|---|
SQR() | إرجاع الجذر التربيعي للرقم المحدد |
ABS() | إعادة القيمة المطلقة لرقم |
EXP() | إرجاع أس الرقم المحدد |
SIN() | إرجاع جيب الزاوية المحددة |
COS() | إرجاع جيب التمام للزاوية المحددة |
TAN() | إرجاع ظل الزاوية المحددة |
لقد قمنا بإدراج عدد قليل فقط من الميزات الرئيسية، ولكن يمكنك دائمًا الرجوع إلى وثائق نظام إدارة قواعد البيانات (DBMS) للحصول على قائمة كاملة بالميزات المدعومة مع وصف تفصيلي.
على سبيل المثال، لنكتب استعلامًا للحصول على الجذر التربيعي للأرقام الموجودة في عمود المبلغ باستخدام الدالة SQR():
Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR
FROM Sumproduct
تعد وظائف معالجة التاريخ والوقت من بين وظائف SQL الأكثر أهمية والأكثر استخدامًا. في قواعد البيانات، يتم تخزين قيم التاريخ والوقت بتنسيق خاص، لذلك لا يمكن استخدامها مباشرة دون معالجة إضافية. يحتوي كل نظام إدارة قواعد بيانات (DBMS) على مجموعة من الوظائف الخاصة به لمعالجة التواريخ، والتي، لسوء الحظ، لا تسمح بنقلها إلى منصات أخرى وتطبيقات SQL.
قائمة ببعض الوظائف للتعامل مع التاريخ والوقت في MS Access:
وظيفة | وصف |
---|---|
DatePart() | إرجاع جزء من التاريخ: السنة، الربع، الشهر، الأسبوع، اليوم، الساعة، الدقيقة، الثانية |
Year(), Month() | إرجاع السنة والشهر على التوالي |
Hour(), Minute(), Second() | إرجاع الساعة والدقائق والثواني من التاريخ المحدد |
WeekdayName() | إرجاع اسم يوم الأسبوع |
دعونا نلقي نظرة على مثال لكيفية عمل الدالة DatePart():
SELECT Date1, DatePart("m", Date1) AS Month1
FROM Sumproduct
تحتوي الدالة DatePart() على معلمة إضافية تسمح لنا بعرض الجزء المطلوب من التاريخ. في المثال، استخدمنا قيمة المعلمة "m"، التي تعرض رقم الشهر (بنفس الطريقة، يمكننا عرض السنة - "yyyy"، الربع - "q"، اليوم - "d"، الأسبوع - "w"، الساعة - "h"، الدقائق - "n"، الثواني - "s"، وما إلى ذلك).
تساعدنا الوظائف الإحصائية في الحصول على بيانات جاهزة دون أخذ عينات منها. غالبًا ما تُستخدم استعلامات SQL مع هذه الوظائف لتحليل وإنشاء تقارير متنوعة. مثال على هذه التحديدات يمكن أن يكون: تحديد عدد الصفوف في الجدول، الحصول على مجموع القيم لحقل معين، البحث عن أكبر/أصغر أو متوسط القيمة في العمود المحدد في الجدول. نلاحظ أيضًا أن الوظائف الإحصائية مدعومة من قبل جميع أنظمة إدارة قواعد البيانات دون أي تغييرات خاصة كتابيًا.
قائمة الوظائف الإحصائية في DBMS Access:
وظيفة | وصف |
---|---|
COUNT() | إرجاع عدد الصفوف في جدول أو عمود |
SUM() | إرجاع مجموع القيم في العمود |
MIN() | إرجاع أصغر قيمة في عمود |
MAX() | إرجاع أكبر قيمة في عمود |
AVG() | إرجاع القيمة المتوسطة في عمود |
إرجاع عدد كافة الصفوف في الجدول:
Run SQLSELECT COUNT(*) AS Count1
FROM Sumproduct
إرجاع عدد كافة الصفوف غير الفارغة في حقل المنتج:
SELECT COUNT(Product) AS Count2
FROM Sumproduct
لقد قمنا عمدا بإزالة قيمة واحدة في عمود المنتج لإظهار الفرق في الأداء بين الاستعلامين.
Run SQLSELECT SUM(Quantity) AS Sum1
FROM Sumproduct
WHERE Month = 'April'
وبهذا الطلب قمنا بعرض إجمالي كمية البضائع المباعة في شهر إبريل.
Run SQLSELECT SUM(Quantity*Amount) AS Sum2
FROM Sumproduct
كما ترون، في الوظائف الإحصائية، يمكننا أيضًا إجراء عمليات حسابية على عدة أعمدة باستخدام عوامل حسابية قياسية.
Run SQLSELECT MIN(Amount) AS Min1
FROM Sumproduct
Run SQLSELECT MAX(Amount) AS Max1
FROM Sumproduct
Run SQLSELECT AVG(Amount) AS Avg1
FROM Sumproduct