Views
Gut entworfene Anwendungen stellen in der Regel eine offene Schnittstelle bereit und verbergen die Implementierungsdetails, sodass Änderungen am Design vorgenommen werden können, ohne die Endnutzer zu beeinträchtigen.
Beim Entwurf deiner Datenbank kannst du ein ähnliches Ergebnis erzielen, indem du die Tabellen abschirmst und den Zugriff auf die Daten nur über eine Reihe von Views erlaubst.
In diesem Artikel schauen wir uns an, was Views sind, wie sie erstellt werden und wofür sie nützlich sein können.
Was ist eine View
Views werden manchmal als „virtuelle Tabellen“ bezeichnet. Das liegt daran, dass eine View für den Nutzer wie eine Tabelle aussieht, tatsächlich aber keine Daten speichert, sondern sie zum Zeitpunkt des Zugriffs aus anderen Tabellen holt.
Ändern sich die Daten in der zugrundeliegenden Tabelle, bekommt der Nutzer beim Zugriff auf die View, die diese Tabelle verwendet, die aktuellen Daten. Views cachen die Ergebnisse der Tabellenabfrage während ihrer Arbeit nicht.
Beispiel für das Erstellen einer View
Als einfaches Beispiel: Nehmen wir an, du möchtest die E-Mail-Adressen in der Nutzertabelle (Users) teilweise verbergen.
Das kann zum Beispiel nützlich sein, wenn die Richtlinien deines Unternehmens es nicht allen erlauben, vertrauliche Informationen über Nutzer zu verwenden. Anstatt also direkten Zugriff auf die Tabelle Users zu erlauben, definierst du eine View mit dem Namen ViewUsers und verlangst, dass alle sie für den Zugriff auf die Nutzerdaten verwenden.
Hier ist ein Beispiel für die Definition dieser View:
MySQL 8.4CREATE VIEW ViewUsers AS SELECT id, name, CONCAT(SUBSTR(email, 1, 2), '****', SUBSTR(email, -4)) AS email FROM Users;
Hier ist ein Beispiel für die Definition dieser View:
MySQL 8.4CREATE VIEW ViewUsers AS SELECT id, name, CONCAT(SUBSTR(email, 1, 2), '****', RIGHT(email, 4)) AS email FROM Users;
Eine View sieht in einer SQL-Abfrage aus wie eine normale Tabelle und wird auch so verwendet:
MySQL 8.4SELECT * FROM ViewUsers;
Wenn du wissen willst, welche Spalten in der View verfügbar sind, kannst du den Befehl DESCRIBE nutzen:
MySQL 8.4DESCRIBE ViewUsers;
Wenn du wissen willst, welche Spalten in der View verfügbar sind, kannst du eine Abfrage auf information_schema ausführen:
MySQL 8.4SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'viewusers';
Allgemeine Syntax einer View
CREATE [OR REPLACE]
VIEW view_name [(view_spalte [, ...])]
AS select_ausdruck;- [ ]optionaler Teil
- ...kann wiederholt werden
- OR REPLACE
Gibt es schon eine View mit diesem Namen, wird sie durch die neue ersetzt. Ohne diesen Teil bricht das Anlegen einer View mit einem vergebenen Namen mit einem Fehler ab.
SchlüsselwortOptional- view_name
Der Name der neuen View. Über ihn sprichst du die View in Queries an, wie eine Tabelle.
- view_spalte
Die Spaltennamen der View. Lässt du sie weg, übernehmen die Spalten die Namen aus der SELECT-Query.
Optional- select_ausdruck
Die SELECT-Query, deren Ergebnis die View zeigt.
Unterabfrage
CREATE [OR REPLACE] VIEW view_name [(view_spalte [, ...])]
AS select_ausdruck;- [ ]optionaler Teil
- ...kann wiederholt werden
- OR REPLACE
Gibt es schon eine View mit diesem Namen, wird sie durch die neue ersetzt. Ohne diesen Teil bricht das Anlegen einer View mit einem vergebenen Namen mit einem Fehler ab. Die neue Query muss dieselben Spalten in derselben Reihenfolge liefern, neue Spalten kannst du nur am Ende hinzufügen.
SchlüsselwortOptional- view_name
Der Name der neuen View. Über ihn sprichst du die View in Queries an, wie eine Tabelle.
- view_spalte
Die Spaltennamen der View. Lässt du sie weg, übernehmen die Spalten die Namen aus der SELECT-Query.
Optional- select_ausdruck
Die SELECT-Query, deren Ergebnis die View zeigt.
Unterabfrage
Wofür Views nützlich sind
Vereinfachung komplexer Abfragen
Views werden eingesetzt, um komplexe Abfragen zu vereinfachen und eine Abstraktion zwischen Nutzer und Datenbank zu schaffen. Sie können die Komplexität der Datenstruktur verbergen und eine vereinfachte Schnittstelle für den Datenzugriff bereitstellen.
Verbesserung der Performance
Das Erstellen von Views, die komplexe Abfragen kapseln, kann dabei helfen, die Ausführung dieser Abfragen zu optimieren. Das kann zu einer schnelleren Ausführung der Abfragen und einer Verbesserung der Gesamt-Performance der Datenbank führen.
Das Erstellen von Views, die komplexe Abfragen kapseln, kann dabei helfen, die Ausführung dieser Abfragen zu optimieren. PostgreSQL unterstützt materialisierte Views (MATERIALIZED VIEW), die die Ergebnisse einer Abfrage physisch speichern und regelmäßig aktualisiert werden, was die Performance bei komplexen Abfragen erheblich verbessern kann.
Sicherstellung der Sicherheit
Views können verwendet werden, um die Sicherheit vertraulicher Daten zu gewährleisten. Indem man Views erstellt, die den Zugriff auf bestimmte Spalten oder Zeilen einschränken, können Administratoren den Zugriff auf sensible Informationen begrenzen. Das hilft sicherzustellen, dass nur autorisierte Nutzer Zugriff auf vertrauliche Daten haben.
Fazit
Views sind ein wichtiges Werkzeug in SQL, mit dem sich komplexe Abfragen vereinfachen, der Datenzugriff standardisieren, die Performance verbessern und die Datensicherheit gewährleisten lassen.
Lass uns prüfen, wie gut du das Thema verstanden hast: Wähle die richtige Aussage zur Frage „Was ist eine View in der Datenbank?“