====== Views ====== ===== Eigenschaften von Views ===== * Sie sind viertuelle Tabellen die spezielle Sichten auf die Datenbanktabellen darstellen * Durch sie können Tabellen angezeigt oder (eingeschränkt) verändert werden * Sie basieren auf anderen Views bzw. Tabellen * Definition durch ein SELECT * Speichern keine eigenen Daten * Werden wie Tabellen behandelt ===== Vorteile ===== * Zugriffsbeschränkungen auf die Datenbank * Ermöglichen einfache Abfragen (ohne JOIN, GROUP BY Funktionen und Subselects) * Ermöglichen Datenunabhängigkeit (Name und Struktur der Tabellen werden hinfällig, Schnittstellenstandardisierung) ===== Syntax um einen View zu erzeugen ===== CREATE [OR REPLACE | FORCE] VIEW Viewname --Inhalt in [] kann geschrieben werden, [(Spalte1, Spalte2, Spalte3, ...)] --| = soviel wie oder AS SELECT ... FROM ... [WITH CHECK OPTION [Constraintname]] --ebenfalls nicht zwingend notwendig
Wenn die Zeile mit den Spaltennamen weggelassen wird, bestimmt die SELECT-Klausel die Spaltennamen des Views. === Definition der Schlüsselwörter in Syntax === * OR REPLACE * Views werden auch erzeugt, wenn bereits ein View mit gleichem Namen besteht (man erspart sich "DROP VIEW Viewname") * FORCE * Der View kann erzeugt werden obwohl es die Tabellen des SELECTs nicht gibt * WITH CHECK OPTION * Definiert, dass man nur Zeilen in den View einfügen bzw. updaten kann, die dieser auch darstellen kann ===== Restriktionen bei Datenänderungen ===== == DELETE == Ein DELETE ist verboten wenn das View-Select folgendes enthält: * JOIN * Gruppenfunktionen * GROUP BY Klausel * DISTINCT == UPDATE == Ein UPDATE ist verboten, wenn: * Ein DELETE verboten ist * Es Spalten als Ausdrücke gibt (z.B. 12 * Gehalt oder 3*4) == INSERT == Ein Insert ist verboten, wenn: * Ein UPDATE verboten ist * NOT NULL Spalten die nicht im View-Select enthalten sind (wenn es NOT NULL Spalten in der Tabelle gibt, aber nicht im View) ===== Löschen von Views ===== DROP VIEW Viewname