Ansichten erstellen
Ansichten vereinfachen den Zugriff auf und die Darstellung von Daten in SQL Server. Als SQL-Entwickler erstellen Sie Ansichten, um komplexe Abfragen zu kapseln, Sicherheitsgrenzen bereitzustellen und Daten in einem Format darzustellen, das den Anforderungen Ihrer Anwendung entspricht.
Verstehen von Ansichten in SQL Server
Eine Ansicht ist eine virtuelle Tabelle, die auf einer SELECT Anweisung basiert. Im Gegensatz zu physischen Tabellen speichern Ansichten keine Daten selbst. Stattdessen rufen sie Bei jeder Abfrage Daten aus zugrunde liegenden Tabellen ab.
Mit Ansichten können Sie die Komplexität von JOIN Klauseln, Berechnungen und Filtern aus Anwendungscode ausblenden. Wenn Ihre Anwendung beispielsweise häufig Kundenbestellungen mit Produktdetails benötigt, können Sie eine Ansicht erstellen, die JOIN über die Tabellen "Kunden", "Bestellungen" und "Produkte" verwendet. Ihre Anwendung fragt dann eine einzelne Ansicht ab, anstatt wiederholt denselben komplexen JOIN zu schreiben.
Ansichten bieten auch eine Sicherheitsebene. Sie können Benutzern zugriff auf bestimmte Spalten über eine Ansicht gewähren, während Sie den Zugriff auf die zugrunde liegenden Tabellen einschränken. Mit diesem Ansatz können Sie nur die Benötigten Daten verfügbar machen, ohne ihnen vollständigen Tabellenzugriff zu gewähren.
Erstellen einer einfachen Ansicht
Sie erstellen eine Ansicht mithilfe der CREATE VIEW Anweisung gefolgt von einer SELECT Abfrage. Die Ansichtsdefinition bestimmt, welche Daten angezeigt werden, wenn Sie die Ansicht abfragen.
Hier ist eine einfache Ansicht, die Kunden- und Bestellinformationen kombiniert:
CREATE VIEW Sales.CustomerOrders
AS
SELECT
c.CustomerID,
c.CustomerName,
c.Email,
o.OrderID,
o.OrderDate,
o.TotalAmount
FROM Sales.Customers c
INNER JOIN Sales.Orders o ON c.CustomerID = o.CustomerID;
Nachdem Sie diese Ansicht erstellt haben, können Sie sie wie jede tabelle abfragen:
SELECT * FROM Sales.CustomerOrders
WHERE CustomerName = 'Contoso Ltd';
Die Ansicht führt die zugrunde liegende SELECT-Anweisung aus und gibt Ergebnisse zurück, als ob sie aus einer einzelnen Tabelle stammen. Durch diese Vereinfachung wird der Anwendungscode übersichtlicher und einfacher verwaltet.
Sie können auch Ansichten mit berechneten Spalten erstellen. In der folgenden Ansicht wird eine Spalte hinzugefügt, in der Bestellungen nach Größe kategorisiert werden:
CREATE VIEW Sales.OrderSummary
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount,
CASE
WHEN TotalAmount < 100 THEN 'Small'
WHEN TotalAmount < 1000 THEN 'Medium'
ELSE 'Large'
END AS OrderSize
FROM Sales.Orders;
Diese Ansicht behandelt die Kategorisierungslogik an einer zentralen Stelle. Jede Abfrage für OrderSummary ruft die gleiche Berechnung ab, ohne den CASE Ausdruck zu duplizieren.
Designüberlegungen anwenden
Beim Entwerfen von Ansichten sollten Sie berücksichtigen, wie sie genutzt und gepflegt werden. Gut gestaltete Ansichten bringen Einfachheit, Leistung und Sicherheit in Einklang.
Geben Sie Spaltennamen explizit an, anstatt SELECT * zu verwenden. Explizite Spalten sorgen dafür, dass Ansichten besser verwaltet werden können und unerwartete Ergebnisse vermieden werden, wenn sich die zugrunde liegenden Tabellen ändern. Wenn jemand einer Basistabelle eine Spalte hinzufügt, bleibt Ihre Ansichtsdefinition konsistent:
CREATE VIEW Sales.ActiveCustomers
AS
SELECT
CustomerID,
CustomerName,
Email,
Phone
FROM Sales.Customers
WHERE IsActive = 1;
Verwenden Sie die WITH CHECK OPTION Klausel, wenn Ansichten Datenänderungen behandeln. Mit dieser Option wird sichergestellt, dass INSERT- und UPDATE-Anweisungen in der Ansicht nur die in der Ansicht sichtbaren Zeilen betreffen:
CREATE VIEW Sales.HighValueOrders
AS
SELECT
OrderID,
CustomerID,
OrderDate,
TotalAmount
FROM Sales.Orders
WHERE TotalAmount > 1000
WITH CHECK OPTION;
Mit dieser Option können Sie keine Bestellung mit TotalAmount von 500 über die HighValueOrders-Ansicht einfügen. Die Datenbank lehnt den Vorgang ab, da die neue Zeile die Bedingung der Ansicht WHERE nicht erfüllt.
Behalten Sie Ansichtsdefinitionen, die sich auf einen bestimmten Zweck konzentrieren. Eine Ansicht, die versucht, mehreren Zwecken zu dienen, wird oft schwierig zu optimieren und zu verstehen. Erstellen Sie separate Ansichten für unterschiedliche Anwendungsfälle, anstatt eine komplexe Ansicht zu erstellen.
Bestimmen, wann Ansichten verwendet werden sollen
Ansichten sind in spezifischen Szenarien am sinnvollsten, in denen ihre Eigenschaften klare Vorteile bieten. Wenn Sie diese Szenarien verstehen, können Sie das richtige Tool für jede Situation auswählen.
Verwenden Sie Ansichten, um komplexe Abfragen zu vereinfachen, die mehrere Anwendungen oder Benutzer ausführen müssen. Anstatt dass jeder die Komplexität der Verknüpfung von fünf Tabellen mit bestimmten Bedingungen verstehen muss, erstellen Sie einmal eine Ansicht. Diese Zentralisierung bedeutet auch, dass Sie die Logik an einer zentralen Stelle optimieren oder ändern können.
Erwägen Sie Ansichten, wenn Sie den Datenzugriff auf Spalten- oder Zeilenebene einschränken müssen. Eine Ansicht kann nur die Spalten verfügbar machen, die für eine Rolle geeignet sind, während vertrauliche Informationen ausgeblendet werden. In Kombination mit den entsprechenden Berechtigungen können Sie in Ansichten Zugriff auf bestimmte Daten gewähren, ohne ganze Tabellen verfügbar zu machen.
Ansichten funktionieren gut für die Darstellung von Daten in verschiedenen Formaten für unterschiedliche Zwecke. Möglicherweise verfügen Sie über eine Tabelle "Produkte " mit technischen Details, aber Ihr Meldeteam benötigt eine vereinfachte Version mit berechneten Feldern. Erstellen Sie eine Ansicht, die die Daten entsprechend transformiert und aggregiert.
Gleichzeitig erkennen Sie, wann andere Objekte besser dienen. Bei leistungskritischen Abfragen, die immer dieselben Ergebnisse zurückgeben, speichern indizierte Ansichten (materialisierte Ansichten) das Resultset physisch. Bei komplexen Berechnungen, die Parameter akzeptieren, bieten benutzerdefinierte Funktionen mehr Flexibilität. Für Datenänderungslogik bieten gespeicherte Prozeduren eine bessere Kontrolle.
Wenn Sie wiederverwendbare Abfragelogik ohne Parameter kapseln müssen und Daten vereinfacht darstellen möchten, sind Ansichten Ihre Lösung. Sie schließen die Lücke zwischen der physischen Datenbankstruktur und der logischen Ansicht der Daten, die Ihre Anwendungen benötigen.