In SQL Server können Sie Abfragen als Ansichten ausführen. Aufrufe sind aus vielen Gründen vorteilhaft, darunter Sicherheit, Benutzerfreundlichkeit und Komfort.
In SQL Server eine Ansicht ist eine virtuelle Tabelle, deren Inhalt durch eine Abfrage definiert wird. Es ist im Grunde eine vorgefertigte Abfrage, die in der Datenbank gespeichert wird.
Eine Ansicht besteht aus einem SELECT
-Anweisung, und wenn Sie eine Abfrage für die Ansicht ausführen, sehen Sie die Ergebnisse wie beim Öffnen einer Tabelle. Ansichten werden als virtuelle Tabellen bezeichnet, da sie Daten aus mehreren Tabellen zusammenführen sowie Daten aggregieren und so darstellen können, als ob es sich um eine einzelne Tabelle handelt.
Vorteile von Aufrufen
Eine Ansicht kann nützlich sein, wenn es mehrere Benutzer mit unterschiedlichen Zugriffsebenen gibt, die alle Teile der Daten in der Datenbank sehen müssen (jedoch nicht unbedingt alle Daten). Ansichten können Folgendes tun:
- Beschränken Sie den Zugriff auf bestimmte Zeilen in einer Tabelle
- Beschränken Sie den Zugriff auf bestimmte Spalten in einer Tabelle
- Fügen Sie Spalten aus mehreren Tabellen zusammen und stellen Sie sie so dar, als wären sie Teil einer einzigen Tabelle
- Präsentieren Sie aggregierte Informationen (z. B. die Ergebnisse von
COUNT()
Funktion)
So erstellen Sie eine Ansicht
Sie erstellen eine Ansicht, indem Sie CREATE VIEW
verwenden -Anweisung, gefolgt von SELECT
Aussage.
CREATE VIEW ViewName AS SELECT ...
Wir erstellen jetzt eine Ansicht aus unserer vorherigen Abfrage.
-
Gestalten Sie die Ansicht
Nehmen Sie die Abfrage aus unserem vorherigen Beispiel und stellen Sie ihr CREATE VIEW RecentAlbums AS voran .
Entfernen Sie auch den
ORDER BY
-Klausel, da Ansichten diese Klausel nicht unterstützen (es sei denn,TOP
,OFFSET
oderFOR XML
ist ebenfalls angegeben).Fügen Sie am Ende der Anweisung auch ein Semikolon als Anweisungsabschlusszeichen hinzu (mehr dazu weiter unten).
Beispielcode
Unten ist der Code aus unserem Beispiel mit dem
ORDER BY
-Klausel entfernt und ein Semikolon als Anweisungsabschlusszeichen hinzugefügt.Ich habe es auch etwas umformatiert, um es besser lesbar zu machen).
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()));
In diesem Beispiel habe ich am Ende der Ansicht ein Semikolon hinzugefügt. Der Abfrage-Designer hat dies nicht eingeschlossen, aber es ist eine bewährte Vorgehensweise, es einzufügen.
Das Semikolon ist Teil des ANSI SQL-92-Standards. Es ist ein Anweisungsabschlusszeichen.
Außerdem hat Microsoft angekündigt, dass Transact-SQL-Anweisungen ohne Semikolon in SQL Server 2016 veraltet sind und in einer zukünftigen Version nicht mehr unterstützt werden (SQL Server hat in der Vergangenheit den
GO
verwendet Schlüsselwort als Anweisungsabschlusszeichen anstelle des Semikolons). -
Führen Sie die Ansicht aus
Führen Sie nun die Ansicht so aus, wie Sie jede andere Abfrage ausführen würden.
Klicken Sie auf Ausführen in der Symbolleiste.
Sie können nun im Objekt-Explorer zu der Ansicht navigieren. Erweitern Sie es und Sie sehen die Spalten und ihre Datentypen und Eigenschaften – als wäre es eine Tabelle.
-
Ansicht abfragen
Nachdem die Ansicht erstellt wurde, können Sie die Ansicht abfragen, indem Sie
SELECT
ausführen Aussage dagegen.So können Sie unsere neu erstellte Ansicht mit
SELECT * FROM RecentAlbums;
abfragen . -
Ansicht filtern
Eines der guten Dinge an Ansichten ist, dass Sie Ihre eigenen Filterkriterien darauf anwenden können, um die Ergebnisse weiter zu filtern.
Beispielsweise könnten Sie
WHERE Genre = 'Pop'
hinzufügen , sodass die Ansicht nur pop zurückgibt Alben der letzten 10 Jahre.
Ansicht ändern
Sie können Ihre Ansicht ändern, indem Sie ALTER VIEW
verwenden -Anweisung anstelle von CREATE VIEW
Aussage.
-
Entwerfen Sie die geänderte Ansicht
Hier ändern wir unsere Ansicht, um Alben der letzten 20 Jahre statt nur 10 anzuzeigen.
Es ist eine ziemlich altmodische Sammlung, also wird jedes Album, das innerhalb der letzten 20 Jahre veröffentlicht wurde, als "aktuell" eingestuft :)
Wir geben auch eine weitere Spalte zurück:Artists.ActiveFrom
Beispielcode
Hier ist der Code, den wir für das Beispiel verwenden:
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()));
-
Ansicht abfragen
Wenn Sie jetzt die Ansicht abfragen, werden Alben im Wert von 20 Jahren zurückgegeben. Außerdem wird das Datum angezeigt, seit dem der Künstler aktiv war.