Sichten werden von einer oder mehreren Basistabellen, Kurznamen oder Sichten abgeleitet und können beim Abrufen von Daten frei austauschbar mit Basistabellen verwendet werden. Wenn Änderungen an den in einer Sicht gezeigten Daten vorgenommen werden, werden die Daten in der eigentlichen Tabelle geändert.
Eine Sicht kann zur Einschränkung des Zugriffs auf sensible Daten verwendet werden, während auf andere Daten eine allgemeinerer Zugriff zugelassen wird.
Beim Einfügen in eine Sicht, in der eine SELECT-Liste der Sichtendefinition direkt oder indirekt den Namen einer Identitätsspalte einer Basistabelle umfaßt, gelten dieselben Regeln wie für das direkte Verweisen der INSERT-Anweisung auf die Identitätsspalte der Basistabelle. Weitere Informationen zur Anweisung INSERT finden Sie im Handbuch SQL Reference.
Über die bereits beschriebene Verwendung hinaus kann eine Sicht auch folgenden Zwecken dienen:
Wenn Sie eine Sicht erstellen, die mit der Standardsyntax von CREATE VIEW auf Kurznamen verweist, erscheint eine Warnung, die darauf hinweist, daß die Berechtigungs-ID der Benutzer dieser Sicht für den Zugriff auf die zugrundeliegenden Objekte an den Datenquellen verwendet werden und nicht die Berechtigungs-ID des Erstellers dieser Sicht. Diese Warnung können Sie mit dem Schlüsselwort FEDERATED unterdrücken.
Eine Alternative zur Erstellung einer Sicht ist die Verwendung eines verschachtelten oder allgemeinen Tabellenausdrucks, um das Durchsuchen von Katalogen zu reduzieren und die Leistung zu erhöhen. Weitere Informationen zu allgemeinen Tabellenausdrücken finden Sie im Handbuch SQL Reference.
Gehen Sie wie folgt vor, um mit der Steuerzentrale eine Sicht zu
erstellen:
|
Geben Sie in der Befehlszeile folgendes ein, um eine Sicht zu erstellen:
CREATE VIEW <name> (<spalte>, <spalte>, <spalte>) SELECT <spaltennamen> FROM <tabellennamen> WITH CHECK OPTION
Die Tabelle EMPLOYEE kann beispielsweise Gehaltsdaten enthalten, die nicht unbedingt jeder Person zugänglich sein sollten. Die Telefonnummer des Mitarbeiters sollte dagegen allgemein verfügbar sein. In diesem Fall kann eine Sicht erstellt werden, die nur aus den Spalten für den Namen (LASTNAME) und für die Telefonnummer (PHONENO) besteht. Der Zugriff auf die Sicht könnte für die Berechtigung PUBLIC (allgemeiner Zugriff) erteilt werden, während der Zugriff auf die gesamte Tabelle EMPLOYEE auf die Personen beschränkt werden könnte, die die Berechtigung haben, Gehaltsdaten einzusehen. Informationen zu Sichten mit Lesezugriff (Read-only Views) finden Sie im Handbuch SQL Reference.
Mit Hilfe einer Sicht können Sie eine Untermenge der Daten einer Tabelle für ein Anwendungsprogramm verfügbar machen und die Daten auf Gültigkeit prüfen, die eingefügt oder aktualisiert werden sollen. Eine Sicht kann Spaltennamen enthalten, die sich von den Namen der entsprechenden Spalten der Originaltabellen unterscheiden.
Durch die Verwendung von Sichten gestalten sich die Möglichkeiten der Anwendungsprogramme und Endbenutzerabfragen, auf Tabellendaten zuzugreifen, wesentlich flexibler.
Mit der folgenden SQL-Anweisung wird eine Sicht von der Tabelle EMPLOYEE erstellt, die alle Mitarbeiter der Abteilung A00 mit der Personalnummer und der Telefonnummer auflistet:
CREATE VIEW EMP_VIEW (DA00NAME, DA00NUM, PHONENO) AS SELECT LASTNAME, EMPNO, PHONENO FROM EMPLOYEE WHERE WORKDEPT = 'A00' WITH CHECK OPTION
Die erste Zeile dieser Anweisung benennt die Sicht und definiert ihre Spalten. Der Name EMP_VIEW muß innerhalb seines Schemas in SYSCAT.TABLES eindeutig sein. Der Name der Sicht erscheint als Tabellenname, obwohl die Sicht keine Daten enthält. Die Sicht wird mit den Spalten DA00NAME, DA00NUM und PHONENO definiert, die den Spalten LASTNAME, EMPNO und PHONENO der Tabelle EMPLOYEE entsprechen. Die Spaltennamen werden nacheinander in der aufgeführten Reihenfolge jeweils den Spalten der mit der Anweisung SELECT angegebenen SELECT-Liste zugeordnet. Wenn Spaltennamen nicht angegeben werden, verwendet die Sicht dieselben Namen wie die Spalten der Ergebnistabelle der Anweisung SELECT.
Die zweite Zeile enthält eine Anweisung SELECT, die beschreibt, welche Werte aus der Datenbank ausgewählt werden sollen. Sie kann die Klauseln ALL, DISTINCT, FROM, WHERE, GROUP BY und HAVING enthalten. Der Name bzw. die Namen der Datenobjekte, aus denen die Spalten für die Sicht auszuwählen sind, müssen nach der Klausel FROM angegeben werden.
Die Klausel WITH CHECK OPTION gibt an, daß jede in der Sicht aktualisierte oder eingefügte Zeile an der Sichtdefinition überprüft und zurückgewiesen werden muß, wenn sie der Definition nicht entspricht. Dadurch wird die Datenintegrität erhöht, aber auch zusätzlicher Verarbeitungsaufwand verursacht. Wenn diese Klausel nicht angegeben wird, werden Einfügungen und Aktualisierungen nicht an der Sichtdefinition überprüft.
Mit der folgenden SQL-Anweisung wird dieselbe Sicht von der Tabelle EMPLOYEE erstellt, allerdings mit der Klausel SELECT AS:
CREATE VIEW EMP_VIEW SELECT LASTNAME AS DA00NAME, EMPNO AS DA00NUM, PHONENO FROM EMPLOYEE WHERE WORKDEPT = 'A00' WITH CHECK OPTION
Sie können eine Sicht erstellen, die in ihrer Definition eine benutzerdefinierte Funktion verwendet. Wenn diese Sicht jedoch aktualisiert werden soll, damit sie die neusten Funktionen enthält, muß sie gelöscht und anschließend neu erstellt werden. Wenn eine Sicht von einer benutzerdefinierten Funktion abhängig ist, kann diese Funktion nicht gelöscht werden.
Mit der folgenden SQL-Anweisung wird eine Sicht mit einer Funktion in ihrer Definition erstellt:
CREATE VIEW EMPLOYEE_PENSION (NAME, PENSION) AS SELECT NAME, PENSION(HIREDATE,BIRTHDATE,SALARY,BONUS) FROM EMPLOYEE
Die benutzerdefinierte Funktion PENSION berechnet die aktuellen Pensionsansprüche eines Mitarbeiters mit einer Formel, die mit den Werten des Einstellungsdatums (HIREDATE), des Geburtsdatums (BIRTHDATE), des Gehalts (SALARY) und der Sondervergütungen (BONUS) arbeitet.
Sie können mit Hilfe der Anweisung CREATE VIEW eine typisierte Sicht erstellen. Umfassende Informationen zu typisierten Sichten finden Sie im Handbuch Application Development Guide.