Erstellt eine Ansicht in der Datenbank.
CREATE [ OR REPLACE ] VIEW [ Eigentümer.]Ansichtsname [ ( Spaltenname, ... ) ] AS SELECT-Anweisung [ WITH CHECK OPTION ]
OR REPLACE-Klausel Wenn Sie OR REPLACE (CREATE OR REPLACE VIEW) angeben, wird eine neue Ansicht erstellt oder eine bestehende Ansicht mit demselben Namen ersetzt. Bestehende Berechtigungen bleiben erhalten, wenn Sie die OR REPLACE-Klausel verwenden, aber INSTEAD OF-Trigger für die Ansicht werden gelöscht.
AS-Klausel Die SELECT-Anweisung, auf der die Ansicht basiert. Die SELECT-Anweisung darf sich nicht auf lokale temporäre Tabellen beziehen. Außerdem kann die SELECT-Anweisung eine GROUP BY-, HAVING-, WINDOW- oder ORDER BY-Klausel enthalten sowie UNION, EXCEPT, INTERSECT oder einen allgemeinen Tabellenausdruck. Sie können jedoch die Auswirkungen auf die Ergebnisse einer Ansichtsdefinition beeinflussen, indem Sie SELECT zusammen mit einer ORDER BY-Klausel in Kombination mit der Klausel FIRST oder TOP verwenden.
WITH CHECK OPTION-Klausel Die WITH CHECK OPTION-Klausel weist alle Aktualisierungen und Einfügungen in die Ansicht zurück, die nicht die Kriterien der Ansicht erfüllen, wie sie von ihrer SELECT-Anweisung angegeben wurden.
Ansichten werden verwendet, um Daten eine andere Perspektive zu geben, auch wenn diese nicht so gespeichert sind. Die CREATE VIEW-Anweisung erstellt eine Ansicht mit dem gegebenen Namen. Sie können eine Ansicht erstellen, die einem anderen Benutzer gehört, indem Sie den Eigentümer angeben. Sie müssen über DBA-Berechtigung verfügen, wenn Sie eine Ansicht für einen anderen Benutzer erstellen.
Ein Ansichtsname kann in den Anweisungen SELECT, DELETE, UPDATE und INSERT statt eines Tabellennamens verwendet werden. Ansichten existieren jedoch in der Datenbank nicht physisch als Tabellen. Sie werden jedes Mal abgeleitet, wenn sie verwendet werden. Die Ansicht wird als das Ergebnis der SELECT-Anweisung abgleitet, die in der CREATE VIEW-Anweisung angegeben wird. Die in einer Ansicht verwendeten Tabellennamen sollten durch die Benutzer-ID des Tabelleneigentümers qualifiziert werden. Sonst könnte es sein, dass eine andere Benutzer-ID die Tabelle nicht finden kann oder eine falsche Tabelle erhält.
Ansichten können aktualisiert werden, es sei denn, die SELECT-Anweisung, welche die Ansicht definiert, enthält eine GROUP BY-Klausel oder eine Aggregatfunktion bzw. erfordert einen Mengenoperator (UNION, INTERSECT, EXCEPT). Eine Aktualisierung der Ansicht führt zu einer Aktualisierung der zugrunde liegenden Tabelle(n).
Den Spalten in der Ansicht werden die Namen zugeordnet, die in der Spaltennamen-Liste angegeben sind. Wenn die Spaltennamenliste nicht festgelegt ist, werden den Spalten Namen aus den Elementen der Auswahlliste gegeben. Alle Elemente in der Auswahlliste müssen eindeutige Namen haben. Um die Namen aus den Elementen der Auswahlliste verwenden zu können, muss jedes Element ein einfacher Spaltenname sein oder einen Aliasnamen besitzen. Siehe SELECT-Anweisung.
Üblicherweise referenziert eine Ansicht Tabellen und Ansichten (sowie ihre entsprechenden Attribute), die im Katalog definiert sind. Allerdings kann eine Ansicht auch SQL-Variablen referenzieren. Wenn in diesem Fall eine Abfrage, die die Ansicht referenziert, ausgeführt wird, wird der Wert der SQL-Variablen verwendet. Ansichten, die SQL-Variablen referenzieren, werden parametrisierte Ansichten genannt, da die Variablen als Parameter der Ausführung der Ansicht agieren.
Parametrisierte Ansichten bieten eine Alternative zum Einbetten des Hauptteils eines äquivalenten SELECT-Blocks in einer Abfrage als abgeleitete Tabelle in der FROM-Klausel der Abfrage. Parametrisierte Ansichten sind besonders bei eingebetteten Abfragen in gespeicherten Prozerduren nützlich, bei denen die in der Ansicht referenzierten SQL-Variablen Eingabeparameter der Prozedur sind.
Es ist nicht notwendig, dass die SQL-Variable vorhanden ist, wenn die CREATE VIEW-Anweisung ausgeführt wird. Wenn jedoch eine Abfrage, die die Ansicht referenziert, ausgeführt wird, ohne dass die SQL-Variable definiert ist, wird ein Fehler zurückgegeben, der anzeigt, dass die Spalte nicht gefunden werden konnte.
RESSOURCE-Datenbankberechtigung und SELECT-Berechtigung für die Tabellen in der Ansichtsdefinition sind erforderlich.
Automatisches Festschreiben (Autocommit).
SQL/2008 CREATE VIEW ist eine Kernfunktion des SQL/2008-Standards, aber einige Funktionen einer in eine Ansicht eingebetteten SELECT-Anweisung sind optionale Sprachenfunktionen. Die Möglichkeit zum Angeben einer ORDER BY-Klausel mit der SELECT-Anweisung auf der obersten Ebene in der Ansichtsdefinition ist die optionale SQL/2008-Sprachenfunktion F852. Die Möglichkeit zum Einschränken der Ergebnismenge einer Ansicht mit SELECT TOP oder LIMIT die optionale SQL/2008-Sprachenfunktion F859 (obwohl der SQL/2008-Standard die FETCH-Klausel für diesen Zweck verwendet). Die Angabe von WITH CHECK OPTION für eine Ansicht die nicht einfach aktualisierbar ist - z.B. weil die SELECT-Anweisung der Ansicht eine abgeleitete Tabelle mit Aggregaten oder DISTINCT enthält oder einen Mengenoperator (INTERSECT, EXCEPT oder UNION) erfordert - ist die optionale SQL/2008-Sprachenfunktion T111.
Einige Funktionen von CREATE VIEW sind Erweiterungen des Herstellers. Parametrisierte Ansichten sind eine Erweiterung des Herstellers, wie auch die optionale OR REPLACE-Syntax.
Im folgenden Beispiel wird eine Ansicht erstellt, die nur Angaben zu den männlichen Mitarbeitern enthält. Die Ansicht verfügt über die gleichen Spaltennamen wie die Basistabelle.
CREATE VIEW MaleEmployees AS SELECT * FROM Employees WHERE Sex = 'M'; |
Im folgenden Beispiel wird eine Ansicht mit den Mitarbeitern und ihren jeweiligen Abteilungen erstellt.
CREATE VIEW EmployeesAndDepartments AS SELECT Surname, GivenName, DepartmentName FROM Employees JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; |
Im folgenden Beispiel wird die Ansicht EmployeesAndDepartments ersetzt, die im vorherigen Beispiel erstellt wurde. Nachdem die Ansicht ersetzt wurde, zeigt sie "city", "state" und "country" für jeden Angestellten:
CREATE OR REPLACE VIEW EmployeesAndDepartments AS SELECT Surname, GivenName, City, State, Country FROM Employees JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID; |
Im folgenden Beispiel wird eine parametrisierte Ansicht erstellt, die auf den Variablen var1 und var2 basiert, die weder Attribute der Employees- noch der Departments-Tabelle sind:
CREATE VIEW EmployeesByState AS SELECT Surname, GivenName, DepartmentName FROM Employees JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID WHERE Employees.State = var1 and Employees.Status = var2; |
Variablen können in der SELECT-Anweisung der Ansicht in jedem Kontext auftreten, bei dem eine Variable ein zulässiger Ausdruck ist. Beispiel: Die folgende parametrisierte Ansicht verwendet den Parameter var1 als Muster für ein LIKE-Prädikat:
CREATE VIEW ProductsByDescription AS SELECT * FROM Products WHERE Products.Description LIKE var1; |
Um diese Ansicht zu verwenden, muss die Variable var1 definiert sein, bevor die die Ansicht referenzierende Abfrage ausgeführt wird. Folgendes könnte z.B. Bestandteil einer Prozedur, einer Funktion oder einer Batchanweisung sein:
BEGIN DECLARE var1 CHAR(20); SET var1 = '%cap%'; SELECT * FROM ProductsByDescription END |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |