SQL सर्वर में, आप दृश्यों के रूप में क्वेरी कर सकते हैं। दृश्य सुरक्षा, उपयोगिता और सुविधा सहित कई कारणों से फायदेमंद होते हैं।
SQL सर्वर में, एक दृश्य एक वर्चुअल टेबल है जिसकी सामग्री को एक क्वेरी द्वारा परिभाषित किया जाता है। यह मूल रूप से एक पूर्व-लिखित क्वेरी है जो डेटाबेस पर संग्रहीत होती है।
एक दृश्य में SELECT
होता है कथन, और जब आप दृश्य के विरुद्ध कोई क्वेरी चलाते हैं, तो आप इसके परिणाम वैसे ही देखते हैं जैसे आप तालिका खोलते समय देखते हैं। दृश्यों को वर्चुअल टेबल के रूप में संदर्भित किया जाता है क्योंकि वे कई तालिकाओं के साथ-साथ कुल डेटा से डेटा खींच सकते हैं, और इसे एक ही तालिका के रूप में प्रस्तुत कर सकते हैं।
दृश्यों के लाभ
एक दृश्य तब उपयोगी हो सकता है जब एक्सेस के विभिन्न स्तरों वाले कई उपयोगकर्ता हों, जिन्हें सभी को डेटाबेस में डेटा के हिस्से देखने की आवश्यकता होती है (लेकिन जरूरी नहीं कि सभी डेटा)। दृश्य निम्न कार्य कर सकते हैं:
- तालिका में विशिष्ट पंक्तियों तक पहुंच प्रतिबंधित करें
- तालिका में विशिष्ट कॉलम तक पहुंच प्रतिबंधित करें
- कई तालिकाओं के स्तंभों को मिलाएं और उन्हें ऐसे प्रस्तुत करें जैसे वे एक ही तालिका का हिस्सा हों
- समग्र जानकारी प्रस्तुत करें (जैसे
COUNT()
. के परिणाम समारोह)
एक दृश्य कैसे बनाएं
आप CREATE VIEW
. का उपयोग करके एक दृश्य बनाते हैं स्टेटमेंट, उसके बाद SELECT
बयान।
CREATE VIEW ViewName AS SELECT ...
अब हम अपनी पिछली क्वेरी से एक दृश्य बनाएंगे।
-
दृश्य डिज़ाइन करें
हमारे पिछले उदाहरण से क्वेरी लें, और इसके पहले नवीनतम एल्बम AS देखें के साथ उपसर्ग करें ।
ORDER BY
. भी हटा दें खंड, क्योंकि विचार इस खंड का समर्थन नहीं करते (जब तक किTOP
,OFFSET
याFOR XML
भी निर्दिष्ट है)।स्टेटमेंट टर्मिनेटर के रूप में स्टेटमेंट के अंत में एक अर्धविराम भी जोड़ें (उस पर और अधिक)।
नमूना कोड
ORDER BY
. के साथ हमारे उदाहरण का कोड नीचे दिया गया है खंड हटा दिया गया है, और एक अर्धविराम एक बयान टर्मिनेटर के रूप में जोड़ा गया है।मैंने इसे और अधिक पठनीय बनाने के लिए इसे थोड़ा सा पुन:स्वरूपित भी किया है)।
CREATE VIEW RecentAlbums AS SELECT Albums.ReleaseDate, Albums.AlbumName, Genres.Genre, Artists.ArtistName FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE (Albums.ReleaseDate > DATEADD(year, - 10, GETDATE()));
इस उदाहरण में मैंने दृश्य के अंत में एक अर्धविराम जोड़ा है। क्वेरी डिज़ाइनर ने इसे शामिल नहीं किया, लेकिन इसे शामिल करना अच्छा अभ्यास है।
अर्धविराम ANSI SQL-92 मानक का हिस्सा है। यह एक स्टेटमेंट टर्मिनेटर कैरेक्टर है।
साथ ही, Microsoft ने घोषणा की है कि गैर-अर्धविराम समाप्त होने वाले Transact-SQL कथन SQL सर्वर 2016 में बहिष्कृत हैं, और वे भविष्य के संस्करण में समर्थित नहीं होंगे (SQL सर्वर ने ऐतिहासिक रूप से
GO
का उपयोग किया है। कीवर्ड अर्धविराम के बजाय स्टेटमेंट टर्मिनेटर के रूप में)। -
दृश्य निष्पादित करें
अब दृश्य को वैसे ही निष्पादित करें जैसे आप किसी अन्य क्वेरी को निष्पादित करेंगे।
निष्पादित करें . क्लिक करें टूलबार पर।
अब आप ऑब्जेक्ट एक्सप्लोरर में दृश्य पर नेविगेट कर सकते हैं। इसका विस्तार करें और आप कॉलम और उनके डेटा प्रकार और गुण देखेंगे - जैसे कि यह एक तालिका थी।
-
दृश्य को क्वेरी करें
अब जब दृश्य बन गया है, तो आप
SELECT
. चलाकर दृश्य को क्वेरी कर सकते हैं इसके खिलाफ बयान।तो आप हमारे नए बनाए गए दृश्य को
SELECT * FROM RecentAlbums;
। -
दृश्य फ़िल्टर करें
दृश्यों के बारे में एक अच्छी बात यह है कि आप उनके खिलाफ अपने स्वयं के फ़िल्टरिंग मानदंड लागू कर सकते हैं - परिणामों को और फ़िल्टर करना।
उदाहरण के लिए, आप जोड़ सकते हैं
WHERE Genre = 'Pop'
, ताकि दृश्य केवल पॉप . लौटाए पिछले 10 वर्षों के एल्बम।
दृश्य बदलें
आप ALTER VIEW
. का उपयोग करके अपने विचार को संशोधित कर सकते हैं CREATE VIEW
के बजाय स्टेटमेंट बयान।
-
बदले हुए दृश्य को डिज़ाइन करें
यहां हम केवल 10 के बजाय पिछले 20 वर्षों में एल्बम वापस करने के लिए अपना दृष्टिकोण संशोधित करेंगे।
यह एक बहुत पुराना स्कूल संग्रह है, इसलिए पिछले 20 वर्षों में जारी किए गए किसी भी एल्बम को "हालिया" के रूप में वर्गीकृत किया गया है :)
हम एक और कॉलम भी लौटाएंगे:Artists.ActiveFrom
नमूना कोड
यहां वह कोड है जिसका हम उदाहरण के लिए उपयोग करते हैं:
ALTER VIEW RecentAlbums AS SELECT Albums.ReleaseDate, Albums.AlbumName, Genres.Genre, Artists.ArtistName, Artists.ActiveFrom FROM Albums INNER JOIN Artists ON Albums.ArtistId = Artists.ArtistId INNER JOIN Genres ON Albums.GenreId = Genres.GenreId WHERE (Albums.ReleaseDate > DATEADD(year, - 20, GETDATE()));
-
दृश्य को क्वेरी करें
अब, दृश्य को क्वेरी करने से 20 साल के एल्बम वापस आ जाएंगे। यह उस तारीख को भी प्रदर्शित करेगा जिससे कलाकार सक्रिय था।