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 पूर्णांक विभाजन
/ विभाजन
- घटाव
+ इसके अलावा
* गुणन
% या MOD मापांक

आइए अब उपरोक्त प्रत्येक ऑपरेटर के उदाहरण देखें

पूर्णांक विभाजन (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`;

उपरोक्त स्क्रिप्ट को निष्पादित करने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।

गुणन_परिणाम
138

मॉड्यूलो ऑपरेटर (-)

मॉड्यूलो ऑपरेटर N को M से विभाजित करता है और हमें शेष देता है। आइए अब मॉड्यूलो ऑपरेटर उदाहरण देखें। हम पिछले उदाहरणों की तरह ही समान मानों का उपयोग करेंगे।

SELECT 23 % 6 ;

OR

SELECT 23 MOD 6 ;

उपरोक्त स्क्रिप्ट को निष्पादित करने से हमें 5 मिलते हैं

आइये अब कुछ सामान्य संख्यात्मक कार्यों पर नजर डालें MySQL.

मंज़िल - यह फ़ंक्शन किसी संख्या से दशमलव स्थान हटाता है और उसे निकटतम न्यूनतम संख्या तक पूर्णांकित करता है। नीचे दी गई स्क्रिप्ट इसका उपयोग प्रदर्शित करती है।

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

उपरोक्त स्क्रिप्ट को निष्पादित करने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।

फ़्लोर_रिजल्ट
3

गोल - यह फ़ंक्शन दशमलव स्थानों वाली संख्या को निकटतम पूर्ण संख्या में पूर्णांकित करता है। नीचे दी गई स्क्रिप्ट इसका उपयोग प्रदर्शित करती है।

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

उपरोक्त स्क्रिप्ट को निष्पादित करने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।

राउंड_परिणाम
4

रेंड - इस फ़ंक्शन का उपयोग यादृच्छिक संख्या उत्पन्न करने के लिए किया जाता है, फ़ंक्शन को कॉल करने पर हर बार इसका मान बदल जाता है। नीचे दी गई स्क्रिप्ट इसका उपयोग प्रदर्शित करती है।

SELECT RAND() AS `random_result`;

संग्रहीत फ़ंक्शन

संग्रहित फ़ंक्शन बिल्ट-इन फ़ंक्शन की तरह ही होते हैं, सिवाय इसके कि आपको संग्रहित फ़ंक्शन को स्वयं परिभाषित करना होता है। एक बार संग्रहित फ़ंक्शन बना लेने के बाद, इसे किसी अन्य फ़ंक्शन की तरह ही SQL स्टेटमेंट में इस्तेमाल किया जा सकता है। संग्रहित फ़ंक्शन बनाने के लिए मूल सिंटैक्स नीचे दिखाया गया है

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

यहाँ

  • “फ़ंक्शन बनाएँ sf_name ([पैरामीटर(s)])” अनिवार्य है और बताता है 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 वर्कबेंच को मायफ्लिक्सडीबी के विरुद्ध चलाने से हमें निम्नलिखित परिणाम प्राप्त होते हैं।

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 सर्वर.