यहाँ, मैं समझाता हूँ कि MySQL "views" क्या हैं और उनका उपयोग कैसे करें।
MySQL हमें विचार बनाने की क्षमता प्रदान करता है . एक दृश्य एक संग्रहीत क्वेरी के रूप में परिभाषित किया गया है कि जब लागू किया जाता है, तो परिणाम सेट उत्पन्न होता है। कुछ लोग विचारों को "वर्चुअल टेबल" कहते हैं।
कीचड़ की तरह साफ़? आइए पुन:प्रयास करें।
एक दृश्य क्या है?
दृश्य एक क्वेरी है जिसे आप डेटाबेस में सहेजते हैं। फिर आप इसे बाद में केवल उस दृश्य को कॉल करके चला सकते हैं (फिर से क्वेरी लिखने के बजाय)।
दृश्य में एक जटिल क्वेरी शामिल हो सकती है लेकिन यह परिणाम प्रस्तुत करेगी जैसे कि यह एक तालिका थी। इसलिए, आप दृश्य को क्वेरी कर सकते हैं जैसे कि यह एक तालिका थी।
उदाहरण के लिए, आपके पास एक जटिल क्वेरी हो सकती है जो तीन अलग-अलग तालिकाओं से डेटा का चयन करती है। आप या तो इस जटिल क्वेरी को हर बार चलाने के लिए टाइप कर सकते हैं, या आप क्वेरी को एक दृश्य के रूप में सहेज सकते हैं। एक बार इसे एक दृश्य के रूप में सहेज लिया गया है, तो आप एक साधारण SELECT
चला सकते हैं जटिल क्वेरी के परिणामों को वापस करने के लिए कथन। लेकिन निश्चित रूप से, यदि आवश्यक हो तो आप दृश्य के विरुद्ध एक जटिल प्रश्न भी लिख सकते हैं।
एक दृश्य बनाएं
दृश्य बनाना बहुत सरल है। आप बस अपनी क्वेरी को कोड की एक पंक्ति के साथ आगे बढ़ाएं और उसे चलाएं। दृश्य तुरंत आपके डेटाबेस में बना दिया जाएगा।
वाक्यविन्यास
एक दृश्य बनाने के लिए, निम्नलिखित कथन टाइप करें, उसके बाद क्वेरी लिखें:
CREATE VIEW view_name AS
view_name को बदलें दृश्य के लिए आप जिस भी नाम का उपयोग करना चाहते हैं।
उदाहरण
यदि हम FruitShop . के विरुद्ध निम्न कोड चलाते हैं डेटाबेस:
CREATE VIEW vFruitInventory AS SELECT Fruit.FruitName, Fruit.Inventory, Units.UnitName FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId;
अब हम vFruitInventory . नामक एक दृश्य देखते हैं दृश्यों . के अंतर्गत सूचीबद्ध (आपको ताज़ा करें . पर क्लिक करना पड़ सकता है SCHEMAS . के लिए बटन मेनू पहले):
अपने विचारों (किसी भी अन्य डेटाबेस ऑब्जेक्ट के साथ) के नामकरण सम्मेलन के बारे में सोचना और उस पर टिके रहना एक अच्छा विचार है। कई डेवलपर अपने व्यू नामों के आगे v
. लगाते हैं , vw
, v_
या vw_
ताकि उनके प्रश्नों में तालिकाओं से विचारों को अलग करना आसान हो जाए। हालांकि, अन्य डेवलपर इस परंपरा से असहमत हैं और अपनी तालिका और नामों को बदलने योग्य देखना पसंद करते हैं।
दृश्य क्वेरी करना
अब हम दृश्य को वैसे ही क्वेरी कर सकते हैं जैसे हम किसी तालिका को क्वेरी करते हैं:
SELECT * FROM vFruitInventory;
परिणाम:
बेशक, हम अधिक विशिष्ट क्वेरी का भी उपयोग कर सकते हैं। उदाहरण के लिए, यह केवल उन अभिलेखों का चयन करता है जहां सूची 10 से अधिक या कम है:
SELECT FruitName FROM vFruitInventory WHERE Inventory <= 10;
लेकिन हम नहीं क्वेरी कॉलम जिन्हें दृश्य में संदर्भित नहीं किया गया है (भले ही वे अंतर्निहित तालिकाओं में हैं जो दृश्य क्वेरी करते हैं)।
उदाहरण के लिए, हम फलों . को क्वेरी कर सकते हैं इस तरह की तालिका:
SELECT * FROM Fruit WHERE FruitId = 1;
लेकिन हम उपरोक्त vFruitInventory . को क्वेरी नहीं कर सकते हैं इस तरह देखें:
SELECT * FROM vFruitInventory WHERE FruitId = 1;
ऐसा इसलिए है क्योंकि दृश्य FruitId . नहीं लौटाता है कॉलम। हमने दृश्य में सटीक कॉलम निर्दिष्ट किए हैं और वे सभी लौटाए गए हैं। जैसा कि बताया गया है, दृश्य का परिणाम सेट एक टेबल की तरह है और कुछ इसे "वर्चुअल टेबल" कहते हैं। यदि "तालिका" में वे कॉलम शामिल नहीं हैं, तो आप उनसे पूछताछ नहीं कर सकते।
एक सीमा होने के बजाय, यह वास्तव में एक सुविधा है विचारों का। इस सुविधा का अर्थ है कि हम उपयोगकर्ताओं को कुछ . तक पहुंच प्रदान कर सकते हैं एक तालिका के कॉलम लेकिन अन्य नहीं (दृश्य के माध्यम से)। दूसरे शब्दों में, हम उपयोगकर्ता को उस दृश्य तक पहुँच प्रदान कर सकते हैं, उस उपयोगकर्ता को उस अंतर्निहित तालिकाओं तक पहुँच प्रदान किए बिना जो दृश्य तक पहुँचती है। कुछ तालिकाओं में संवेदनशील जानकारी संग्रहीत हो सकती है जिसे उपयोगकर्ता तक पहुंचने की अनुमति नहीं है। लेकिन वही टेबल गैर-संवेदनशील जानकारी भी स्टोर कर सकती हैं जिनकी उन्हें जरूरत है उपयोग करने के लिए। क्या करें? एक दृश्य बनाएँ! और वह दृश्य उन तालिकाओं से केवल गैर-संवेदनशील जानकारी का चयन कर सकता है।
दृश्य को संशोधित करना
आपके विचार को संशोधित करने के लिए यहां दो अलग-अलग तरीके दिए गए हैं।
विकल्प 1:ALTER VIEW
का उपयोग करें कथन
आप ALTER VIEW
. का उपयोग करके किसी दृश्य को संशोधित कर सकते हैं बयान। इस तरह:
ALTER VIEW view_name AS
view_name को बदलें उस दृश्य के नाम के साथ जिसे आप बदलना चाहते हैं।
उदाहरण
आइए Fruit.FruitId जोड़ें देखने के लिए फ़ील्ड:
ALTER VIEW vFruitInventory AS SELECT Fruit.FruitId, Fruit.FruitName, Fruit.Inventory, Units.UnitName FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId;
अब, जब हम FruitId . को वापस करने का प्रयास करते हैं हमारे प्रश्नों में क्षेत्र हमें परिणाम मिलेगा।
लेकिन ध्यान दें कि हम इस फ़ील्ड को Fruit.FruitId
के रूप में एक्सेस करने का प्रयास नहीं कर सकते हैं . हम इसे केवल FruitId
. के रूप में एक्सेस कर सकते हैं . और ऐसा ही होना चाहिए। आखिरकार, दृश्य एक "आभासी तालिका" है और हमें उन तालिकाओं की संरचना को जानने की कोई आवश्यकता नहीं है जिनसे यह पूछताछ करता है।
विकल्प 2:CREATE OR REPLACE
का उपयोग करें
ध्यान दें कि ALTER VIEW
. चलाने से पहले दृश्य मौजूद होना चाहिए बयान। यदि यह मौजूद नहीं है, तो आपको एक त्रुटि प्राप्त होगी। आप CREATE OR REPLACE
. का उपयोग करके इस समस्या से बच सकते हैं बयान। यदि यह मौजूद नहीं है तो यह दृश्य बनाएगा, या यदि ऐसा है तो इसे बदल देगा।
तो हम उपरोक्त दृश्य को इस तरह बना सकते थे:
CREATE OR REPLACE VIEW vFruitInventory AS SELECT Fruit.FruitName, Fruit.Inventory, Units.UnitName FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId;
और फिर हम उसी CREATE OR REPLACE
. का उपयोग करके इसे अपडेट कर सकते हैं बयान, लेकिन सिर्फ परिभाषा को संशोधित करना। उदाहरण के लिए, Fruit.FruitId
. में जोड़ना फ़ील्ड:
CREATE OR REPLACE VIEW vFruitInventory AS SELECT Fruit.FruitId, Fruit.FruitName, Fruit.Inventory, Units.UnitName FROM Fruit INNER JOIN Units ON Fruit.UnitId = Units.UnitId;
एक दृश्य छोड़ना
आप DROP VIEW
. का उपयोग करके एक दृश्य ड्रॉप कर सकते हैं बयान। इस तरह:
DROP VIEW vFruitInventory
उपरोक्त कथन vFruitInventory . नामक दृश्य को हटा देगा ।
एकाधिक दृश्य छोड़ना
आप एक ही DROP VIEW
. का उपयोग करके एक से अधिक दृश्य छोड़ सकते हैं बयान। बस प्रत्येक दृश्य नाम को अल्पविराम से अलग करें। इस तरह:
DROP VIEW view_1, view_2 ...
IF EXISTS
खंड
आप IF EXISTS
. का भी उपयोग कर सकते हैं यदि कोई दृश्य मौजूद नहीं है तो त्रुटि को होने से रोकने के लिए क्लॉज:
DROP VIEW IF EXISTS view_1, view_2 ...