TOP

SQL-الدرس 7. وظائف معالجة البيانات

كما هو الحال في معظم لغات البرمجة، لدى SQL وظائف لمعالجة البيانات. تجدر الإشارة إلى أنه، على عكس عبارات SQL، فإن الوظائف ليست موحدة لجميع أنواع أنظمة إدارة قواعد البيانات، أي أنه لتنفيذ نفس العمليات على البيانات، فإن أنظمة إدارة قواعد البيانات المختلفة لها أسماء وظائف خاصة بها. وهذا يعني أن كود الاستعلام المكتوب في أحد أنظمة إدارة قواعد البيانات (DBMS) قد لا يعمل في نظام آخر، ويجب أخذ ذلك في الاعتبار في المستقبل. ينطبق هذا في الغالب على وظائف معالجة القيم النصية وتحويل أنواع البيانات ومعالجة التواريخ.


تدعم معظم أنظمة إدارة قواعد البيانات مجموعة قياسية من أنواع الوظائف، وهي:

  • وظائف النص المستخدمة لمعالجة النص (استخراج جزء من الأحرف من النص، تحديد طول النص، تحويل الأحرف إلى أحرف كبيرة أو صغيرة...)؛
  • وظائف عددية. يتم استخدامها لإجراء العمليات الحسابية على القيم العددية.
  • وظائف التاريخ والوقت (يتم تنفيذ معالجة التاريخ والوقت، وحساب الفترة بين التواريخ، والتحقق من صحة التواريخ، وما إلى ذلك)؛
  • الوظائف الإحصائية (لحساب القيم القصوى/الدنيا، ومتوسط القيم، وحساب الكمية والمجموع...)؛
  • وظائف النظام (توفير أنواع مختلفة من معلومات الخدمة حول نظام إدارة قواعد البيانات والمستخدم وما إلى ذلك).
  • 1. وظائف SQL لمعالجة النصوص

    يحتوي تطبيق 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
    

    2. وظائف SQL لمعالجة الأرقام

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

    وظيفة وصف
    SQR() إرجاع الجذر التربيعي للرقم المحدد
    ABS() إعادة القيمة المطلقة لرقم
    EXP() إرجاع أس الرقم المحدد
    SIN() إرجاع جيب الزاوية المحددة
    COS() إرجاع جيب التمام للزاوية المحددة
    TAN() إرجاع ظل الزاوية المحددة

    لقد قمنا بإدراج عدد قليل فقط من الميزات الرئيسية، ولكن يمكنك دائمًا الرجوع إلى وثائق نظام إدارة قواعد البيانات (DBMS) للحصول على قائمة كاملة بالميزات المدعومة مع وصف تفصيلي.

    على سبيل المثال، لنكتب استعلامًا للحصول على الجذر التربيعي للأرقام الموجودة في عمود المبلغ باستخدام الدالة SQR():

    Run SQLSELECT Amount, SQR(Amount) AS Amount_SQR 
    FROM Sumproduct
    
    يستخدم MySQL الدالة SQRT() للحصول على الجذر التربيعي لرقم.

    3. وظائف SQL لمعالجة التاريخ والوقت

    تعد وظائف معالجة التاريخ والوقت من بين وظائف 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"، وما إلى ذلك).

    4. وظائف SQL الإحصائية

    تساعدنا الوظائف الإحصائية في الحصول على بيانات جاهزة دون أخذ عينات منها. غالبًا ما تُستخدم استعلامات SQL مع هذه الوظائف لتحليل وإنشاء تقارير متنوعة. مثال على هذه التحديدات يمكن أن يكون: تحديد عدد الصفوف في الجدول، الحصول على مجموع القيم لحقل معين، البحث عن أكبر/أصغر أو متوسط القيمة في العمود المحدد في الجدول. نلاحظ أيضًا أن الوظائف الإحصائية مدعومة من قبل جميع أنظمة إدارة قواعد البيانات دون أي تغييرات خاصة كتابيًا.

    قائمة الوظائف الإحصائية في DBMS Access:

    وظيفة وصف
    COUNT() إرجاع عدد الصفوف في جدول أو عمود
    SUM() إرجاع مجموع القيم في العمود
    MIN() إرجاع أصغر قيمة في عمود
    MAX() إرجاع أكبر قيمة في عمود
    AVG() إرجاع القيمة المتوسطة في عمود

    4.1 أمثلة على استخدام الدالة COUNT()

    إرجاع عدد كافة الصفوف في الجدول:

    Run SQLSELECT COUNT(*) AS Count1 
    FROM Sumproduct
    

    إرجاع عدد كافة الصفوف غير الفارغة في حقل المنتج:

    SELECT COUNT(Product) AS Count2 
    FROM Sumproduct
    

    لقد قمنا عمدا بإزالة قيمة واحدة في عمود المنتج لإظهار الفرق في الأداء بين الاستعلامين.

    4.2 أمثلة على استخدام الدالة SUM()

    Run SQLSELECT SUM(Quantity) AS Sum1 
    FROM Sumproduct 
    WHERE Month = 'April'
    

    وبهذا الطلب قمنا بعرض إجمالي كمية البضائع المباعة في شهر إبريل.

    Run SQLSELECT SUM(Quantity*Amount) AS Sum2 
    FROM Sumproduct
    

    كما ترون، في الوظائف الإحصائية، يمكننا أيضًا إجراء عمليات حسابية على عدة أعمدة باستخدام عوامل حسابية قياسية.

    4.3 مثال على استخدام الدالة MIN()

    Run SQLSELECT MIN(Amount) AS Min1 
    FROM Sumproduct
    

    4.4 مثال على استخدام الدالة MAX()

    Run SQLSELECT MAX(Amount) AS Max1 
    FROM Sumproduct
    

    4.5 مثال على استخدام الدالة AVG()

    Run SQLSELECT AVG(Amount) AS Avg1
    FROM Sumproduct