MySQL के कार्य: स्ट्रिंग, न्यूमेरिक, उपयोगकर्ता-परिभाषित, संग्रहित

Anonim

कार्य क्या हैं?

MySQL डेटा को स्टोर करने और पुनः प्राप्त करने की तुलना में बहुत अधिक कर सकता है । हम इसे पुनर्प्राप्त करने या सहेजने से पहले डेटा पर जोड़ तोड़ भी कर सकते हैं । यही वह जगह है जहाँ MySQL फ़ंक्शंस आते हैं। फ़ंक्शंस बस कोड के टुकड़े हैं जो कुछ ऑपरेशन करते हैं और फिर एक परिणाम देते हैं। कुछ फ़ंक्शन पैरामीटर स्वीकार करते हैं जबकि अन्य फ़ंक्शन पैरामीटर स्वीकार नहीं करते हैं।

संक्षिप्त रूप से MySQL फ़ंक्शन के एक उदाहरण को देखें। डिफ़ॉल्ट रूप से, MySQL प्रारूप "YYYY-MM-DD" में दिनांक डेटा प्रकारों को बचाता है। मान लीजिए कि हमने एक एप्लिकेशन बनाया है और हमारे उपयोगकर्ता चाहते हैं कि तारीख "DD-MM-YYYY" प्रारूप में लौटा दी जाए, हम इसे प्राप्त करने के लिए फ़ंक्शन DATE_FORMAT में निर्मित MySQL का उपयोग कर सकते हैं। DATE_FORMAT MySQL में सबसे अधिक उपयोग किए जाने वाले कार्यों में से एक है। हम इसे और अधिक विवरण में देखेंगे क्योंकि हम पाठ को प्रकट करते हैं।

कार्यों का उपयोग क्यों करें?

परिचय में दिए गए उदाहरण के आधार पर, कंप्यूटर प्रोग्रामिंग में अनुभव वाले लोग सोच रहे होंगे "MySQL के कार्य क्यों परेशान करते हैं? उसी प्रभाव को स्क्रिप्टिंग / प्रोग्रामिंग भाषा के साथ प्राप्त किया जा सकता है?" यह सच है कि हम आवेदन कार्यक्रम में कुछ प्रक्रियाओं / कार्य को लिखकर प्राप्त कर सकते हैं।

परिचय में हमारे DATE उदाहरण पर वापस जा रहे हैं, हमारे उपयोगकर्ताओं को वांछित प्रारूप में डेटा प्राप्त करने के लिए, व्यवसाय परत को आवश्यक प्रसंस्करण करना होगा।

यह तब समस्या बन जाता है जब एप्लिकेशन को अन्य प्रणालियों के साथ एकीकृत करना पड़ता है। जब हम DATE_FORMAT जैसे MySQL फ़ंक्शंस का उपयोग करते हैं, तो हम उस कार्यक्षमता को डेटाबेस में एम्बेड कर सकते हैं और किसी भी एप्लिकेशन को डेटा की आवश्यकता होती है। यह व्यावसायिक तर्क में फिर से काम करता है और डेटा असंगतियों को कम करता है।

एक अन्य कारण जो हमें MySQL फ़ंक्शन का उपयोग करने पर विचार करना चाहिए , वह यह तथ्य है कि यह क्लाइंट / सर्वर अनुप्रयोगों में नेटवर्क ट्रैफ़िक को कम करने में मदद कर सकता है । बिजनेस लेयर को केवल डाटा में हेरफेर किए बिना स्टोर किए गए फ़ंक्शन पर कॉल करने की आवश्यकता होगी। औसतन, फ़ंक्शन का उपयोग समग्र सिस्टम प्रदर्शन को बेहतर बनाने में मदद कर सकता है।

कार्यों के प्रकार

अंतर्निहित कार्य

MySQL कई सारे फंक्शन्स में बनाया गया है। बिल्ट इन फंक्शंस केवल MySQL सर्वर में पहले से लागू किए गए कार्य हैं। ये फ़ंक्शन हमें डेटा पर विभिन्न प्रकार के जोड़तोड़ करने की अनुमति देते हैं। अंतर्निहित कार्यों को मूल रूप से निम्नलिखित सबसे अधिक उपयोग की जाने वाली श्रेणियों में वर्गीकृत किया जा सकता है।

  • स्ट्रिंग्स फ़ंक्शन - स्ट्रिंग डेटा प्रकारों पर काम करते हैं
  • संख्यात्मक कार्य - संख्यात्मक डेटा प्रकारों पर कार्य करते हैं
  • दिनांक कार्य - दिनांक डेटा प्रकारों पर कार्य करते हैं
  • सकल कार्य - उपरोक्त सभी प्रकार के डेटा पर काम करते हैं और संक्षेपित परिणाम सेट का उत्पादन करते हैं।
  • अन्य कार्य - MySQL भी अन्य प्रकार के निर्मित कार्यों का समर्थन करता है, लेकिन हम अपने पाठ को उपरोक्त नामित कार्यों तक ही सीमित रखेंगे।

आइए अब ऊपर वर्णित प्रत्येक फ़ंक्शन को देखें। हम अपने "Myflixdb" का उपयोग करते हुए सबसे अधिक उपयोग किए जाने वाले कार्यों की व्याख्या करेंगे।

स्ट्रिंग फ़ंक्शन

हमने पहले ही देखा कि स्ट्रिंग कार्य क्या करते हैं। हम एक व्यावहारिक उदाहरण देखेंगे जो उनका उपयोग करता है। हमारी फिल्मों की तालिका में, कम और ऊपरी मामलों के अक्षरों के संयोजन का उपयोग करके फिल्म के शीर्षक संग्रहीत किए जाते हैं। मान लीजिए हम एक क्वेरी सूची प्राप्त करना चाहते हैं जो ऊपरी मामले के पत्रों में फिल्म के शीर्षक लौटाती है। हम ऐसा करने के लिए "UCASE" फ़ंक्शन का उपयोग कर सकते हैं। यह एक पैरामीटर के रूप में एक स्ट्रिंग लेता है और सभी अक्षरों को ऊपरी मामले में परिवर्तित करता है। नीचे दिखाई गई स्क्रिप्ट "UCASE" फ़ंक्शन के उपयोग को प्रदर्शित करती है।

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

यहां

  • UCASE (`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 कई स्ट्रिंग फ़ंक्शंस का समर्थन करता है। सभी अंतर्निहित कार्य की पूरी सूची के लिए, MySQL वेबसाइट पर इस लिंक http://dev.mysql.com/doc/refman/5.0/en/string-functions.html पर जाएं।

संख्यात्मक कार्य

जैसा कि पहले उल्लेख किया गया है, ये फ़ंक्शन संख्यात्मक डेटा प्रकारों पर काम करते हैं। हम एसक्यूएल स्टेटमेंट्स में संख्यात्मक डेटा पर गणितीय गणना कर सकते हैं।

Arithematic ऑपरेटरों

MySQL निम्न अंकगणितीय ऑपरेटरों का समर्थन करता है जिनका उपयोग SQL कथनों में संगणना करने के लिए किया जा सकता है।

नाम

विवरण

डिव

पूर्णांक विभाजन

/

विभाजन

-

घटाव

+

इसके अलावा

*

गुणा

% या MOD

मापांक

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

इंटेगर डिवीजन (DIV)

SELECT 23 DIV 6 ;

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

डिवीजन ऑपरेटर (/)

आइए अब डिवीजन ऑपरेटर उदाहरण देखें। हम DIV उदाहरण को संशोधित करेंगे।

SELECT 23 / 6 ;

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

3.8333 है

घटाव ऑपरेटर (-)

चलो अब घटाव ऑपरेटर उदाहरण को देखें। हम पिछले दो उदाहरणों में समान मानों का उपयोग करेंगे

SELECT 23 - 6 ;

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

अतिरिक्त ऑपरेटर (+)

आइए अब इसके अतिरिक्त ऑपरेटर उदाहरण देखें। हम पिछले उदाहरण को संशोधित करेंगे।

SELECT 23 + 6 ;

उपरोक्त लिपि का निष्पादन हमें २ ९ देता है

गुणन ऑपरेटर (*)

आइए अब गुणन ऑपरेटर उदाहरण देखें। हम पिछले उदाहरणों के समान मानों का उपयोग करेंगे।

SELECT 23 * 6 AS `multiplication_result`;

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

गुणन_श्रेणी

138

मोडुलो ऑपरेटर (-)

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

SELECT 23 % 6 ;

या

SELECT 23 MOD 6 ;

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

आइए अब MySQL में कुछ सामान्य संख्यात्मक कार्यों को देखें।

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

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

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

तल_श्रेणी

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

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

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

Round_result

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

SELECT RAND() AS `random_result`;

संग्रहित कार्य

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

CREATE FUNCTION sf_name ([parameter(s)])RETURNS data typeDETERMINISTICSTATEMENTS

यहां

  • "CREATE FUNCTION sf_name ([पैरामीटर (s)))" अनिवार्य है और MySQL सर्वर को कोष्ठक में परिभाषित वैकल्पिक मापदंडों के साथ `sf_name 'नामक फ़ंक्शन बनाने के लिए कहता है।
  • "रिटर्न्स डेटा प्रकार" अनिवार्य है और उस डेटा प्रकार को निर्दिष्ट करता है जिसे फ़ंक्शन को वापस लौटना चाहिए।
  • "DETERMINISTIC" का अर्थ है फ़ंक्शन समान मान लौटाएगा यदि उसी तर्क को इसके लिए आपूर्ति की जाती है।
  • "स्टेटमेंट" एक प्रक्रियात्मक कोड है जिसे फ़ंक्शन निष्पादित करता है।

आइए अब एक व्यावहारिक उदाहरण देखें जो एक अंतर्निहित फ़ंक्शन को लागू करता है। मान लीजिए हम जानना चाहते हैं कि कौन सी किराए की फिल्में रिटर्न की तारीख से आगे हैं। हम एक संग्रहीत फ़ंक्शन बना सकते हैं जो पैरामीटर के रूप में वापसी की तारीख को स्वीकार करता है और फिर इसकी तुलना MySQL सर्वर में वर्तमान तिथि से करता है। यदि वर्तमान तिथि रिटर्न मूवी की तारीख से कम है, तो हम "नहीं" वापस करते हैं और हम "हां" वापस करते हैं। नीचे दी गई स्क्रिप्ट हमें वह हासिल करने में मदद करती है।

DELIMITER |CREATE FUNCTION sf_past_movie_return_date (return_date DATE)RETURNS VARCHAR(3)DETERMINISTICBEGINDECLARE sf_value VARCHAR(3);IF curdate() > return_dateTHEN SET sf_value = 'Yes';ELSEIF curdate() <= return_dateTHEN 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 कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को 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 सर्वर में शामिल किए जा सकते हैं।