MySQL الوظائف: سلسلة، رقمية، محددة من قبل المستخدم، مخزنة

ما هي الوظائف؟

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

دعونا ننظر بإيجاز إلى مثال على MySQL وظيفة. بشكل افتراضي، MySQL يحفظ أنواع بيانات التاريخ بالتنسيق "YYYY-MM-DD". لنفترض أننا قمنا ببناء تطبيق ويريد مستخدمونا إرجاع التاريخ بالتنسيق "DD-MM-YYYY"، يمكننا استخدامه MySQL وظيفة DATE_FORMAT المضمنة لتحقيق ذلك. DATE_FORMAT هي إحدى الوظائف الأكثر استخدامًا في MySQLسوف ننظر إلى هذا الأمر بمزيد من التفصيل عندما نشرح الدرس.

لماذا استخدام الوظائف؟

لماذا استخدام الوظائف

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

بالعودة إلى مثال DATE الخاص بنا في المقدمة، لكي يتمكن مستخدمونا من الحصول على البيانات بالتنسيق المطلوب، يجب على طبقة الأعمال إجراء المعالجة اللازمة.

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

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

أنواع الوظائف

المدمج في وظائف

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

  • وظائف السلاسل - العمل على أنواع البيانات السلسلة
  • وظائف رقمية - العمل على أنواع البيانات الرقمية
  • وظائف التاريخ - العمل على أنواع بيانات التاريخ
  • وظائف مجمعة - العمل على جميع أنواع البيانات المذكورة أعلاه وإنتاج مجموعات نتائج موجزة.
  • وظائف أخرى - MySQL يدعم أيضًا أنواعًا أخرى من الوظائف المضمنة ولكننا سنقتصر درسنا على الوظائف المذكورة أعلاه فقط.

دعونا الآن نلقي نظرة على كل وظيفة من الوظائف المذكورة أعلاه بالتفصيل. سنقوم بشرح الوظائف الأكثر استخدامًا باستخدام "Myflixdb".

وظائف سلسلة

لقد نظرنا بالفعل إلى ما تفعله وظائف السلسلة. سننظر إلى مثال عملي يستخدمها. في جدول الأفلام لدينا، يتم تخزين عناوين الأفلام باستخدام مجموعات من الأحرف الصغيرة والكبيرة. لنفترض أننا نريد الحصول على قائمة استعلام تُرجع عناوين الأفلام بأحرف كبيرة. يمكننا استخدام وظيفة "UCASE" للقيام بذلك. يأخذ سلسلة كمعلمة ويحول جميع الأحرف إلى أحرف كبيرة. يوضح البرنامج النصي الموضح أدناه استخدام وظيفة "UCASE".

SELECT `movie_id`,`title`, UCASE(`title`)  FROM `movies`;

هنا

  • UCASE(`title`) هي الدالة المضمنة التي تأخذ العنوان كمعلمة وترجعه بأحرف كبيرة مع الاسم المستعار `upper_case_title`.

تنفيذ البرنامج النصي أعلاه في MySQL يعطينا العمل مع Myflixdb النتائج التالية الموضحة أدناه.

movie_id title UCASE('title')
16 67% Guilty 67% GUILTY
6 Angels and Demons ANGELS AND DEMONS
4 Code Name Black CODE NAME BLACK
5 Daddy's Little Girls DADDY'S LITTLE GIRLS
7 Davinci Code DAVINCI CODE
2 Forgetting Sarah Marshal FORGETTING SARAH MARSHAL
9 Honey mooners HONEY MOONERS
19 movie 3 MOVIE 3
1 Pirates of the Caribean 4 PIRATES OF THE CARIBEAN 4
18 sample movie SAMPLE MOVIE
17 The Great Dictator THE GREAT DICTATOR
3 X-Men X-MEN

MySQL يدعم عددًا من وظائف السلسلة. للحصول على قائمة كاملة بجميع وظائف السلسلة المضمنة، راجع هذا الرابط http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL موقع الكتروني.

وظائف رقمية

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

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

MySQL يدعم المشغلات الحسابية التالية التي يمكن استخدامها لإجراء العمليات الحسابية في عبارات SQL.

الاسم الوصف
DIV تقسيم صحيح
/ تقسيم
- طرح
+ إضافة
* تضاعف
٪ أو وزارة الدفاع معام

دعونا الآن نلقي نظرة على أمثلة لكل من المشغلات المذكورة أعلاه

قسم الأعداد الصحيحة (DIV)

SELECT 23 DIV 6 ;

تنفيذ البرنامج النصي أعلاه يعطينا النتائج التالية.

3

عامل القسمة (/)

لنلقِ الآن نظرة على مثال عامل القسمة. وسنقوم بتعديل مثال DIV.

SELECT 23 / 6 ;

تنفيذ البرنامج النصي أعلاه يعطينا النتائج التالية.

3.8333

عامل الطرح (-)

دعونا الآن نلقي نظرة على مثال عامل الطرح. سنستخدم نفس القيم كما في المثالين السابقين

SELECT 23 - 6 ;

تنفيذ البرنامج النصي أعلاه يعطينا 17

عامل الجمع (+)

لنلقِ الآن نظرة على مثال عامل الجمع. سنقوم بتعديل المثال السابق.

SELECT 23 + 6 ;

تنفيذ البرنامج النصي أعلاه يعطينا 29

عامل الضرب (*)

لنلقِ الآن نظرة على مثال عامل الضرب. سنستخدم نفس القيم كما في الأمثلة السابقة.

SELECT 23 * 6 AS `multiplication_result`;

تنفيذ البرنامج النصي أعلاه يعطينا النتائج التالية.

multiplication_result
138

عامل النمط (-)

يقوم عامل modulo بقسمة N على M ويعطينا الباقي. دعنا الآن نلقي نظرة على مثال عامل modulo. سنستخدم نفس القيم كما في الأمثلة السابقة.

SELECT 23 % 6 ;

OR

SELECT 23 MOD 6 ;

تنفيذ البرنامج النصي أعلاه يعطينا 5

دعونا الآن نلقي نظرة على بعض الوظائف الرقمية الشائعة في MySQL.

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

SELECT FLOOR(23 / 6) AS `floor_result`;

تنفيذ البرنامج النصي أعلاه يعطينا النتائج التالية.

Floor_result
3

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

SELECT ROUND(23 / 6) AS `round_result`;

تنفيذ البرنامج النصي أعلاه يعطينا النتائج التالية.

Round_result
4

راند - تستخدم هذه الدالة لتوليد رقم عشوائي، وتتغير قيمته في كل مرة يتم فيها استدعاء الدالة. يوضح البرنامج النصي الموضح أدناه استخدامه.

SELECT RAND() AS `random_result`;

الوظائف المخزنة

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

CREATE FUNCTION sf_name ([parameter(s)])
   RETURNS data type
   DETERMINISTIC
   STATEMENTS

هنا

  • "إنشاء وظيفة sf_name ([المعلمة (المعلمات)])" إلزامي ويحكي MySQL الخادم لإنشاء وظيفة باسم `sf_name' مع معلمات اختيارية محددة بين قوسين.
  • "إرجاع نوع البيانات" إلزامي ويحدد نوع البيانات الذي يجب أن ترجعه الوظيفة.
  • "حتمية" يعني أن الوظيفة ستعيد نفس القيم إذا تم توفير نفس الوسائط لها.
  • "صياغات" هو الكود الإجرائي الذي تنفذه الوظيفة.

لنلقِ الآن نظرة على مثال عملي ينفذ وظيفة مضمنة. لنفترض أننا نريد معرفة الأفلام المستأجرة التي تجاوزت تاريخ الإرجاع. يمكننا إنشاء وظيفة مخزنة تقبل تاريخ الإرجاع كمعلمة ثم تقارنه بالتاريخ الحالي في MySQL الخادم. إذا كان التاريخ الحالي أقل من تاريخ عودة الفيلم، فإننا نعيد "لا" وإلا نرجع "نعم". يساعدنا البرنامج النصي الموضح أدناه على تحقيق ذلك.

DELIMITER |
CREATE FUNCTION sf_past_movie_return_date (return_date DATE)
  RETURNS VARCHAR(3)
   DETERMINISTIC
    BEGIN
     DECLARE sf_value VARCHAR(3);
        IF curdate() > return_date
            THEN SET sf_value = 'Yes';
        ELSEIF  curdate() <= return_date
            THEN SET sf_value = 'No';
        END IF;
     RETURN sf_value;
    END|

أدى تنفيذ البرنامج النصي أعلاه إلى إنشاء الوظيفة المخزنة `sf_past_movie_return_date`.

دعونا الآن نختبر وظيفتنا المخزنة.

SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`)  FROM `movierentals`;

تنفيذ البرنامج النصي أعلاه في MySQL يعطينا workbench مقابل myflixdb النتائج التالية.

movie_id membership_number return_date CURDATE() sf_past_movie_return_date('return_date')
1 1 NULL 04-08-2012 NULL
2 1 25-06-2012 04-08-2012 yes
2 3 25-06-2012 04-08-2012 yes
2 2 25-06-2012 04-08-2012 yes
3 3 NULL 04-08-2012 NULL

الوظائف المعرفة من قبل المستخدم

MySQL كما يدعم الوظائف التي يحددها المستخدم والتي تمتد MySQL. الوظائف المحددة بواسطة المستخدم هي وظائف يمكنك إنشاؤها باستخدام لغة برمجة مثل C, C++ الخ ثم قم بإضافتها إلى MySQL الخادم. بمجرد إضافتها، يمكن استخدامها تمامًا مثل أي وظيفة أخرى.

الملخص

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