Datenbank
SQL
3 Views


3.1 Allgemeines

Mit einer Sicht (engl. View) kann man komplexe Abfragen kapseln. Das heißt, man schreibt nicht mehr einen komplexen SQL-Befehl, sondern kann die Daten von dieser View – wie bei einer einfachen Tabelle – direkt abfragen, als ob man die Daten aus einer Tabelle liest. Man muß sich das wie eine virtuelle Tabelle vorstellen, die aber einigen Einschränkungen bei der operativen Bearbeitung unterliegt.

 

Änderungen an der zu Grunde liegenden Daten wirken sich direkt auf die View aus, diese liefert dann sofort die neuen Daten. Das heißt auch, das die View die Daten nicht gesondert speichert, sondern auf die vorhandenen Daten zurückgreift. Somit belegt eine View auch keinen Speicherplatz in der Datenbank (bis auf die Deklaration).

 

Eine View wird eingesetzt, um dem Anwender eine besondere Sicht auf die Daten zu geben. Wenn den Anwender nicht an allen Daten interessieren oder der Anwender nicht alle Daten sehen darf, werden Views eingesetzt. Als Beispiel sei eine Mitarbeitertabelle, in der auch das Gehalt eines Mitarbeiters gespeichert ist. Nur die Geschäftsleitung soll das Gehalt sehen. Der Mitarbeiter, der die Wochenpläne aufstellt, soll die Gehälter nicht sehen und benötigt diese auch nicht für seine Arbeitspläne. Hier kann man dem Anwender eine View auf die Mitarbeitertabelle zur Verfügung stellen, in der nur der Name und die Abteilung enthalten sind, der Geschäftsleitung erteilt man den kompletten Zugriff auf die Mitarbeitertabelle.

 


3.2 Erstellen einer View

Eine View wird mit dem Befehl CREATE VIEW erzeugt. Diesem Befehl gibt man die zu Grunde liegende Abfrage mit. Die Spaltennamen der View ergeben sich aus der Abfrage oder werden explizit vergeben.

 

Hiermit kann man die Spaltennamen nach seinen eigenen Bedürfnissen anpassen. Der Datentyp der Ergebnisspalten werden aus den zu Grunde liegenden Tabellenspalten vererbt.

 

CREATE VIEW Name [<Spalte 1> (,<Spalte x>){0..n} AS

SELECT Spalte 1 (,Spalte y){0..n}

FROM ...

 

Für die Erstellung View, die minimale Kundendaten zur Verfügung stellt, schreibt man also

 

Create view

  Minimale_Kundendaten (Nummer, Name, Vorname) AS

Select

  kd.Nummer,

  kd.Name,

  kd.Vorname

from

  Kunde kd

 

Man kann für den zu Grunde liegenden Abfragebefehl fast alle Elemete des SELECT Befehls verwenden, also die Daten mit WHERE Einschränken usw.

 

Einschränkungen bestehen darin, das man bei der Abfrage keine UNION Klausel verwenden darf und das keine ORDER BY Klausel verwenden darf.

 


3.3 Lesen aus einer View

Wie oben angedeutet kann man sich eine View wie eine virtuelle Tabelle vorstellen.

 

Das bedeutet gleichzeitig, das man die Daten mit einem SELECT Befehl lesen kann. Bei dem Lesen aus einer View unterliegt man bezüglich der verwendbaren Klauseln des SELECT Befehls keinen Einschränkungen.

Für die Abfrage der Daten aus der oben erstellten View schreibt man

 

Select

  *

from

  Minimale_Kundendaten

 


3.4 Ändern der Daten

Bezüglich der Änderung der Daten, die eine View liefert, gibt es einige Einschränkungen. Diese werden hier aufgeführt

 

Aus Sichten, die aus mehreren Tabellen bestehen, können keine Zeilen gelöscht werden
In Sichten, die aus Tabellen besteht, die NOT NULL Spalten haben, diese aber nicht in der View enthalten sind, können keine Daten eingefügt werden
Wenn Daten in einer Sicht eingefügt oder geändert werden, müssen die Daten zu einer einzigen physikalischen Tabelle gehören
Wird bei der Erzeugung die DISTINCT Klausel verwendet, können keine Daten eingefügt oder geändert werden
Enthält die View virtuelle Spalten (berechnete Spalten), so können keine Daten eingefügt oder geändert werden

 

Dies sind die wichtigsten Einschränkungen, jedes DBMS hat noch seine eigenen Einschränkungen, die in der Produktbeschreibung nachzulesen sind.

 


3.5 Access Ergänzungen

Bei ACCESS wird eine View in der Regel nicht mit dem Befehl CREATE VIEW erzeugt. Hier wird eine Abfrage angelegt, der man nur den SELECT Befehl angibt. Diese Abfrage wird dann unter einen Namen – dem Viewnamen – abgespeichert und kann dann damit arbeiten.

 

Beachte, das die ACCESS Abfragen nicht nur Views sein müssen. Hierbei kann ACCESS jeden Befehl ausführen. Der Name ist hierbei leicht verwirrend.

 



Last update:  13.07.2005