Mit dieser Anweisung erstellen Sie eine Ansicht in der Datenbank. Ansichten werden verwendet, um Daten eine andere Perspektive zu geben, auch wenn diese nicht so gespeichert sind.
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.
AS-Klausel Die SELECT-Anweisung, auf der die Ansicht basiert. Die SELECT-Anweisung darf sich nicht auf lokale temporäre Tabellen beziehen. Sie kann eine ORDER BY- oder GROUP BY-Klausel enthalten, und kann UNION sein. In einigen Fällen, v.a. in Kombination mit der Klausel FIRST oder TOP, hat allerdings die Verwendung einer SELECT-Anweisung in Verbindung mit einer ORDER BY-Klausel keine Auswirkungen auf die Ergebnisse einer Ansichtsdefinition.
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.
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-Berechtigungen verfügen, wenn Sie eine Ansicht für einen anderen Benutzer erstellen.
Ein Ansichtsname kann in den Anweisungen SELECT, DELETE, UPDATE und INSERT anstatt 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, eine Aggregatfunktion oder erfordert eine UNION-Klausel. 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. Weitere Hinweise finden Sie unter SELECT-Anweisung.
Üblicherweise referenziert eine Ansicht Tabellen und Ansichten (sowie ihre entsprechenden Attribute), die im Katalog definiert sind. Alerdings kann eine Ansicht auch SQL-Variable referenzieren. Wenn in diesem Fall eine Abfrage, die die Ansicht referenziert, ausgeführt wird, wird der Wert der SQL-Variablen verwendet. Ansichten, die SQL-Variable 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 eine 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. Falls die SQL-Variable allerdings nicht definiert ist, wenn eine sich auf die Ansicht beziehende Abfrage ausgeführt wird, wird der Fehler Spalte nicht gefunden zurückgegeben.
RESSOURCE-Datenbankberechtigung und SELECT-Berechtigung für die Tabellen in der Ansichtsdefinition sind erforderlich.
Automatisches Festschreiben (Autocommit).
SQL/2003 Kernfunktion. Parametrisierte Ansichten sind jedoch eine Erweiterung des Herstellers.
Mit dem 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'; |
Das folgende Beispiel erstellt eine Ansicht mit den Mitarbeitern und ihren jeweiligen Abteilungen.
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; |
Das folgende Beispiel erstellt eine parametrisierte Ansicht, 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; |
Variable 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 das 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. Das Folgende 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. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |