MySQL व्यू क्रिएट व्यू स्टेटमेंट का उपयोग करके बनाए जाते हैं। दृश्य एकल तालिका, एकाधिक तालिकाओं या किसी अन्य दृश्य से बनाए जा सकते हैं। जैसा कि हम जानते हैं कि एक दृश्य बनाने के लिए, उपयोगकर्ता के पास विशिष्ट कार्यान्वयन के अनुसार उपयुक्त सिस्टम विशेषाधिकार होना चाहिए।
बुनियादी दृश्य बनाएं वाक्य रचना इस प्रकार है -
सिंटैक्स
<पूर्व>बनाएं [या बदलें] [एल्गोरिथम ={अपरिभाषित | मर्ज | TEMPTABLE}] [परिभाषितकर्ता ={ उपयोगकर्ता | CURRENT_USER }] [एसक्यूएल सुरक्षा { डेफिनर | INVOKER }] view_name देखें [(column_list)] as select_statement [के साथ [CASCADED | LOCAL] चेक विकल्प]यहां,
-
दृश्य बनाएं - यह कथन एक नया दृश्य बनाता है।
-
View_name - view_name दृश्य का नाम है। एक दृश्य हमेशा एक डेटाबेस से संबंधित होता है। डिफ़ॉल्ट रूप से, वर्तमान में उपयोग किए गए डेटाबेस में एक नया दृश्य बनाया जाता है।
-
Select_statement - Select_statement एक SELECT कथन है और दृश्य की परिभाषा प्रदान करता है। Select_statement आधार तालिकाओं या अन्य दृश्यों से डेटा का चयन कर सकता है।
-
Column_list - column_list भाग वैकल्पिक है। यह दृश्य नाम के ठीक बाद दृश्य के स्तंभों के लिए नामों की एक सूची प्रदान करता है जहां नाम अद्वितीय होने चाहिए। column_list में नामों की संख्या वही होनी चाहिए जो SELECT स्टेटमेंट द्वारा प्राप्त किए गए कॉलम की संख्या है। अगर हम अपने व्यू कॉलम को एक अलग नाम देना चाहते हैं, तो हम चयन सूची में [एएस नाम] क्लॉज जोड़कर ऐसा कर सकते हैं।
-
या बदलें - यदि क्रिएट व्यू स्टेटमेंट के साथ वैकल्पिक या रिप्लेस क्लॉज जोड़ा जाता है, तो क्रिएट व्यू स्टेटमेंट मौजूदा व्यू को बदल देता है और एक नया बना देता है। अगर व्यू मौजूद नहीं है, तो क्रिएट व्यू, क्रिएट या रिप्लेस व्यू जैसा ही है।
-
एल्गोरिथम - एल्गोरिदम क्लॉज वैकल्पिक है, यह प्रभावित करता है कि MySQL दृश्य को कैसे संसाधित करता है। ALGORITHM तीन मान लेता है:MERGE, TEMPTABLE, या UNDEFINED। डिफ़ॉल्ट एल्गोरिथम अपरिभाषित है।
-
[DEFINER ={ उपयोगकर्ता | CURRENT_USER }] [एसक्यूएल सुरक्षा { डेफिनर | इन्वोकर } ] − DEFINER और SQL SECURITY क्लॉज़ उस सुरक्षा संदर्भ को निर्दिष्ट करते हैं जिसका उपयोग दृश्य आमंत्रण समय पर एक्सेस विशेषाधिकारों की जाँच करते समय किया जाता है। यदि आप DEFINER खंड निर्दिष्ट करते हैं, तो निम्न नियम कानूनी DEFINER उपयोगकर्ता मान निर्धारित करते हैं -
-
यदि आपके पास सुपर विशेषाधिकार नहीं है, तो एकमात्र कानूनी उपयोगकर्ता मूल्य आपका अपना खाता है और आप निश्चित को किसी अन्य खाते में सेट नहीं कर सकते।
-
यदि आपके पास सुपर विशेषाधिकार है, तो आप कोई भी वाक्यात्मक रूप से कानूनी खाता नाम निर्दिष्ट कर सकते हैं।
-
SQL SECURITY DEFINER विशेषता के साथ परिभाषित संग्रहीत रूटीन के भीतर, CURRENT_USER रूटीन का DEFINER मान लौटाता है। यदि दृश्य परिभाषा में CURRENT_USER का DEFINER मान है, तो यह ऐसे रूटीन में परिभाषित दृश्य को भी प्रभावित करता है।
-
<मजबूत>8. [के साथ [कैस्केड | LOCAL] चेक विकल्प] - चेक विकल्प के साथ क्लॉज को अपडेट करने योग्य दृश्य के लिए दिया जा सकता है ताकि पंक्तियों में इंसर्ट या अपडेट को रोका जा सके, सिवाय उन पंक्तियों के जिनके लिए WHERE क्लॉज चयन_स्टेटमेंट में सत्य है। एक अद्यतन करने योग्य दृश्य के लिए चेक विकल्प के साथ क्लॉज में, स्थानीय और कैस्केड कीवर्ड चेक परीक्षण के दायरे को निर्धारित करते हैं जब दृश्य को किसी अन्य दृश्य के संदर्भ में परिभाषित किया जाता है। LOCAL कीवर्ड चेक विकल्प को केवल परिभाषित किए जाने वाले दृश्य तक सीमित करता है। CASCADED अंतर्निहित विचारों के मूल्यांकन के लिए भी जाँच का कारण बनता है। जब कोई भी कीवर्ड नहीं दिया जाता है, तो डिफ़ॉल्ट CASCADED होता है।
उदाहरण
इस उदाहरण में, हम तालिका 'ग्राहक' पर First_View नाम का एक दृश्य बना रहे हैं, जिसमें डेटा इस प्रकार है -
mysql> ग्राहकों में से * चुनें;+---------------+----------+| Customer_Id | नाम |+---------------+----------+| 1 | राहुल || 2 | यशपाल || 3 | गौरव || 4 | वीरेंदर |+---------------+----------+4 पंक्तियों में सेट (1.30 सेकंड)mysql> दृश्य बनाएं first_view as SELECT * From Customers;query OK, 0 पंक्तियाँ प्रभावित (0.36 सेकंड)
अब, यदि हम दृश्य के नाम का उपयोग करके क्वेरी चलाएंगे तो हमें उस तालिका से विवरण प्राप्त होगा जिस पर इसे बनाया गया है।
mysql> first_view से * चुनें;+---------------+----------+| Customer_Id | नाम |+---------------+----------+| 1 | राहुल || 2 | यशपाल || 3 | गौरव || 4 | वीरेंद्र |+---------------+----------+4 पंक्तियों में सेट (0.13 सेकंड)