एसक्यूएल - दृश्यों का उपयोग करना

एक दृश्य SQL कथन से अधिक कुछ नहीं है जो डेटाबेस में एक संबद्ध नाम के साथ संग्रहीत है। एक दृश्य वास्तव में पूर्वनिर्धारित SQL क्वेरी के रूप में एक तालिका की एक रचना है।

किसी दृश्य में किसी तालिका की सभी पंक्तियाँ हो सकती हैं या किसी तालिका से पंक्तियों का चयन किया जा सकता है। एक दृश्य एक या कई तालिकाओं से बनाया जा सकता है जो दृश्य बनाने के लिए लिखित SQL क्वेरी पर निर्भर करता है।

दृश्य, जो एक प्रकार की वर्चुअल टेबल हैं जो उपयोगकर्ताओं को निम्नलिखित कार्य करने की अनुमति देती हैं -

  • एक तरह से संरचना डेटा, जो उपयोगकर्ताओं या उपयोगकर्ताओं के वर्ग को स्वाभाविक या सहज लगता है।

  • इस तरह से डेटा तक पहुंच को प्रतिबंधित करें जिसे एक उपयोगकर्ता देख सकता है और (कभी-कभी) ठीक उसी तरह से संशोधित करता है जिसकी उन्हें आवश्यकता है और अधिक नहीं।

  • विभिन्न तालिकाओं से डेटा संक्षेप करें जो रिपोर्ट उत्पन्न करने के लिए उपयोग किया जा सकता है।

दृश्य बनाना

डेटाबेस दृश्य का उपयोग कर बनाया जाता है CREATE VIEWबयान। दृश्य एक ही तालिका, कई तालिकाओं या किसी अन्य दृश्य से बनाए जा सकते हैं।

एक दृश्य बनाने के लिए, उपयोगकर्ता को विशिष्ट कार्यान्वयन के अनुसार उपयुक्त सिस्टम विशेषाधिकार होना चाहिए।

बुनियादी CREATE VIEW वाक्य रचना इस प्रकार है -

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

आप अपने SELECT स्टेटमेंट में कई टेबल को इसी तरह से शामिल कर सकते हैं जैसे कि आप उन्हें एक सामान्य SQL सेलेक्ट क्वेरी में इस्तेमाल करते हैं।

उदाहरण

निम्नलिखित रिकॉर्ड वाले ग्राहक तालिका पर विचार करें -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

ग्राहक तालिका से दृश्य बनाने के लिए निम्नलिखित एक उदाहरण है। यह दृश्य ग्राहक तालिका से ग्राहक का नाम और आयु के लिए उपयोग किया जाएगा।

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

अब, आप CUSTOMERS_VIEW को उसी तरह से क्वेरी कर सकते हैं जैसे आप एक वास्तविक तालिका को क्वेरी करते हैं। निम्नलिखित उसी के लिए एक उदाहरण है।

SQL > SELECT * FROM CUSTOMERS_VIEW;

यह निम्नलिखित परिणाम का उत्पादन करेगा।

+----------+-----+
| name     | age |
+----------+-----+
| Ramesh   |  32 |
| Khilan   |  25 |
| kaushik  |  23 |
| Chaitali |  25 |
| Hardik   |  27 |
| Komal    |  22 |
| Muffy    |  24 |
+----------+-----+

चेक विकल्प के साथ

चेक विकल्प के साथ एक रचनात्मक दृश्य बयान विकल्प है। CHECK OPTION का उद्देश्य यह सुनिश्चित करना है कि सभी UPDATE और INSERTs, व्यू डेफिनिशन में कंडीशन (स) को संतुष्ट करें।

यदि वे शर्त को पूरा नहीं करते हैं, तो अद्यतन या INSERT त्रुटि देता है।

निम्न कोड ब्लॉक में CHECK OPTION के साथ CUSTOMERS_VIEW समान दृश्य बनाने का एक उदाहरण है।

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

इस मामले में चेक विकल्प के साथ दृश्य के AGE कॉलम में किसी भी NULL मान के प्रवेश से इनकार करना चाहिए, क्योंकि दृश्य डेटा द्वारा परिभाषित किया गया है जिसका AGE कॉलम में NULL मान नहीं है।

एक दृश्य अद्यतन करना

एक दृश्य को कुछ शर्तों के तहत अद्यतन किया जा सकता है जो नीचे दिए गए हैं -

  • चयन खंड में DISTINCT कीवर्ड नहीं हो सकता है।

  • चयन खंड में सारांश कार्य नहीं हो सकते हैं।

  • चयनित खंड में सेट फ़ंक्शंस नहीं हो सकते हैं।

  • चयन खंड में सेट ऑपरेटर नहीं हो सकते हैं।

  • चयन खंड में आदेश द्वारा आदेश शामिल नहीं हो सकता है।

  • FROM क्लॉज़ में एक से अधिक तालिकाएँ नहीं हो सकती हैं।

  • जहां क्लॉज में उपश्रेणियाँ नहीं हो सकती हैं।

  • क्वेरी में समूह BY या HAVING नहीं हो सकता है।

  • परिकलित कॉलम अपडेट नहीं किए जा सकते हैं।

  • बेस तालिका से सभी NULL कॉलम को INSERT क्वेरी को कार्य करने के लिए दृश्य में शामिल नहीं किया जाना चाहिए।

इसलिए, यदि कोई दृश्य उपरोक्त सभी नियमों को पूरा करता है तो आप उस दृश्य को अपडेट कर सकते हैं। निम्नलिखित कोड ब्लॉक में रमेश की आयु को अद्यतन करने के लिए एक उदाहरण है।

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 35
   WHERE name = 'Ramesh';

यह अंत में बेस टेबल कस्टमर्स को अपडेट करेगा और वही व्यू में खुद को प्रतिबिंबित करेगा। अब, आधार तालिका को क्वेरी करने का प्रयास करें और SELECT स्टेटमेंट निम्न परिणाम देगा।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

पंक्तियों को एक दृश्य में सम्मिलित करना

डेटा की पंक्तियों को एक दृश्य में डाला जा सकता है। UPDATE कमांड पर लागू होने वाले समान नियम INSERT कमांड पर भी लागू होते हैं।

यहाँ, हम CUSTOMERS_VIEW में पंक्तियाँ नहीं डाल सकते क्योंकि हमने इस दृश्य में सभी NOT NULL कॉलम शामिल नहीं किए हैं, अन्यथा आप पंक्तियों को एक दृश्य में उसी तरह सम्मिलित कर सकते हैं जैसे आप उन्हें किसी तालिका में सम्मिलित करते हैं।

दृश्य में पंक्तियों को हटाना

डेटा की पंक्तियों को एक दृश्य से हटाया जा सकता है। UPDATE और INSERT कमांड पर लागू होने वाले समान नियम DELETE कमांड पर लागू होते हैं।

निम्नलिखित AGE = 22 वाले रिकॉर्ड को हटाने के लिए एक उदाहरण है।

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 22;

यह अंततः बेस टेबल कस्टमर्स की एक पंक्ति को हटा देगा और उसी को दृश्य में प्रतिबिंबित करेगा। अब, आधार तालिका को क्वेरी करने का प्रयास करें और SELECT स्टेटमेंट निम्न परिणाम देगा।

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

गिरते हुए दृश्य

जाहिर है, जहां आपके पास एक दृश्य है, आपको दृश्य को छोड़ने का एक तरीका चाहिए, अगर इसकी आवश्यकता नहीं है। वाक्यविन्यास बहुत सरल है और नीचे दिया गया है -

DROP VIEW view_name;

ग्राहक तालिका से CUSTOMERS_VIEW को छोड़ने के लिए एक उदाहरण निम्नलिखित है।

DROP VIEW CUSTOMERS_VIEW;