खोज…


देखें

CREATE VIEW view_EmployeeInfo
AS   
    SELECT EmployeeID,
        FirstName,
        LastName,
        HireDate  
    FROM Employee
GO

विचारों से पंक्तियों को तालिकाओं की तरह चुना जा सकता है:

SELECT FirstName
FROM view_EmployeeInfo

आप एक गणना किए गए कॉलम के साथ एक दृश्य भी बना सकते हैं। हम परिकलित कॉलम जोड़कर ऊपर दिए गए दृश्य को संशोधित कर सकते हैं:

CREATE VIEW view_EmployeeReport
AS   
    SELECT EmployeeID,
        FirstName,
        LastName,
        Coalesce(FirstName,'') + ' ' + Coalesce(LastName,'') as FullName,
        HireDate  
    FROM Employee
GO

यह दृश्य एक अतिरिक्त स्तंभ जोड़ता है जो तब दिखाई देगा जब आप इसमें से पंक्तियों का SELECT करेंगे। इस अतिरिक्त कॉलम के मान तालिका Employee FirstName और LastName फ़ील्ड पर निर्भर होंगे और उन फ़ील्ड के अपडेट होने पर स्वचालित रूप से पीछे के दृश्यों को अपडेट कर देंगे।

एन्क्रिप्शन के साथ देखें

CREATE VIEW view_EmployeeInfo
WITH ENCRYPTION
AS   
SELECT EmployeeID, FirstName, LastName, HireDate  
FROM Employee
GO

INNER JOIN के साथ VATE क्रिएट करें

CREATE VIEW view_PersonEmployee
AS  
    SELECT P.LastName,
        P.FirstName,
        E.JobTitle
    FROM Employee AS E
    INNER JOIN Person AS P  
        ON P.BusinessEntityID = E.BusinessEntityID
GO

दृश्य तालिकाओं, टेबल फ़ंक्शन, या यहां तक कि अन्य विचारों जैसे कई स्रोतों से डेटा का चयन करने के लिए जॉइन का उपयोग कर सकते हैं। यह उदाहरण कर्मचारी तालिका से FirstName और LastName कॉलम और कर्मचारी तालिका से JobTitle कॉलम का उपयोग करता है।

यह दृश्य अब डेटाबेस में प्रबंधकों के लिए सभी संबंधित पंक्तियों को देखने के लिए उपयोग किया जा सकता है:

SELECT *
FROM view_PersonEmployee
WHERE JobTitle LIKE '%Manager%'

अनुक्रमित दृश्य बनाएँ

एक इंडेक्स के साथ एक दृश्य बनाने के लिए, WITH SCHEMABINDING कीवर्ड का उपयोग करके दृश्य बनाया जाना चाहिए:

CREATE VIEW view_EmployeeInfo
WITH SCHEMABINDING
AS   
    SELECT EmployeeID,
        FirstName,
        LastName,
        HireDate  
    FROM [dbo].Employee
GO

अब किसी भी संकुल या गैर-संकुलित सूचकांक को बनाया जा सकता है:

CREATE UNIQUE CLUSTERED INDEX IX_view_EmployeeInfo
ON view_EmployeeInfo
(
     EmployeeID ASC
)

अनुक्रमित दृश्य के लिए कुछ सीमाएँ हैं:

  • दृश्य परिभाषा एक ही डेटाबेस में एक या अधिक तालिकाओं को संदर्भित कर सकती है।

  • एक बार अद्वितीय क्लस्टर किए गए अनुक्रमणिका बनाए जाने पर, दृश्य के विरुद्ध अतिरिक्त गैर-अनुक्रमित अनुक्रमणिकाएँ बनाई जा सकती हैं।

  • आप अंतर्निहित तालिकाओं में डेटा को अपडेट कर सकते हैं - जिसमें आवेषण, अपडेट, हटाए गए और यहां तक कि ट्रंकट्स भी शामिल हैं।

  • आप अंतर्निहित तालिकाओं और स्तंभों को संशोधित नहीं कर सकते। दृश्य को SCHEMABINDING विकल्प के साथ बनाया गया है।

  • इसमें COUNT, MIN, MAX, TOP, बाहरी जोड़ या कुछ अन्य कीवर्ड या तत्व शामिल नहीं हो सकते हैं।

अनुक्रमित दृश्य बनाने के बारे में अधिक जानकारी के लिए आप इस MSDN लेख को पढ़ सकते हैं

समूहीकृत दृश्य

एक समूहीकृत दृश्य एक समूह के आधार के साथ एक क्वेरी पर आधारित है। चूंकि प्रत्येक समूह के आधार में एक से अधिक पंक्ति हो सकती हैं, जहां से इसे बनाया गया था, ये आवश्यक रूप से केवल-पढ़ने के लिए दृश्य हैं। इस तरह के व्यू में आमतौर पर एक या एक से अधिक कार्य होते हैं और उनका उपयोग रिपोर्टिंग उद्देश्यों के लिए किया जाता है। वे SQL में कमजोरियों के आसपास काम करने के लिए भी उपयोगी हैं। एक दृश्य पर विचार करें जो प्रत्येक राज्य में सबसे बड़ी बिक्री दिखाता है। प्रश्न सीधा है:

https://www.simple-talk.com/sql/t-sql-programming/sql-view-beyond-the-basics/

CREATE VIEW BigSales (state_code, sales_amt_total)
AS SELECT state_code, MAX(sales_amt)
     FROM Sales
    GROUP BY state_code;

यूनिअन-एड व्यू

UNION या UNION पर आधारित दृश्य सभी ऑपरेशन केवल पढ़ने के लिए होते हैं क्योंकि आधार तालिकाओं में से किसी एक पंक्ति में परिवर्तन को मैप करने का कोई एकल तरीका नहीं है। UNION ऑपरेटर डुप्लिकेट पंक्तियों को परिणामों से हटा देगा। दोनों यूनिअन और यूनिअन सभी ऑपरेटर पंक्तियों को किस तालिका से छिपाते हैं। इस तरह के दृश्यों का उपयोग करना चाहिए, क्योंकि UNION [ALL] में कॉलम का अपना कोई नाम नहीं है। सिद्धांत रूप में, दो असंतुष्ट तालिकाओं का एक संघ, जिनमें से किसी में भी डुप्लिकेट पंक्तियाँ नहीं हैं, अपग्रेड होने योग्य होनी चाहिए।

https://www.simple-talk.com/sql/t-sql-programming/sql-view-beyond-the-basics/

CREATE VIEW DepTally2 (emp_nbr, dependent_cnt)
AS (SELECT emp_nbr, COUNT(*)
      FROM Dependents
     GROUP BY emp_nbr)
   UNION
   (SELECT emp_nbr, 0
      FROM Personnel AS P2
     WHERE NOT EXISTS 
          (SELECT *
             FROM Dependents AS D2
            WHERE D2.emp_nbr = P2.emp_nbr));


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow