Was ist ein View? — Virtuelle Tabelle in relationalen Datenbanken

Melden

Ein View (zu Deutsch: Sicht) ist in der Welt der relationalen Datenbanken (wie MySQL, PostgreSQL, SQL Server oder Oracle) eine virtuelle Tabelle. Er speichert keine eigenen Daten, sondern das Ergebnis einer vordefinierten SQL-Abfrage.

Dieses Tutorial führt dich Schritt für Schritt durch das Konzept, die Erstellung und die Verwaltung von Views.


1. Was genau ist ein View?

Stell dir einen View wie eine "gespeicherte Abfrage" vor. Wenn du einen View aufrufst, führt die Datenbank im Hintergrund die hinterlegte Abfrage aus und zeigt dir das Ergebnis so an, als wäre es eine echte Tabelle.

Vorteile von Views:

  • Einfachheit: Komplexe Joins über viele Tabellen müssen nur einmal geschrieben werden.
  • Sicherheit: Du kannst Benutzern Zugriff auf einen View geben, anstatt auf die zugrunde liegenden Tabellen (um z. B. Gehaltsspalten auszublenden).
  • Konsistenz: Logik (z. B. "Was ist ein aktiver Kunde?") wird zentral an einer Stelle definiert.

2. Die Ausgangslage (Beispiel)

Wir haben zwei Tabellen:

  1. Mitarbeiter (ID, Name, Gehalt, AbteilungID)
  2. Abteilungen (ID, Abteilungsname)

3. Einen View erstellen

Die Syntax lautet:

CREATE VIEW view_name AS
SELECT spalte1, spalte2
FROM tabelle
WHERE bedingung;

Beispiel: Wir möchten einen View erstellen, der die Namen der Mitarbeiter zusammen mit ihren Abteilungsnamen anzeigt (ein klassischer JOIN).

CREATE VIEW MitarbeiterListe AS
SELECT 
    m.Name AS MitarbeiterName, 
    a.Abteilungsname
FROM Mitarbeiter m
JOIN Abteilungen a ON m.AbteilungID = a.ID;

4. Einen View abfragen

Sobald der View erstellt ist, kannst du ihn wie eine ganz normale Tabelle nutzen:

SELECT * FROM MitarbeiterListe;

Du kannst auch Filter auf den View anwenden:

SELECT * FROM MitarbeiterListe 
WHERE Abteilungsname = 'Marketing';

5. Einen View ändern oder löschen

Wenn sich die Logik ändert, kannst du den View überschreiben oder entfernen.

View aktualisieren (ersetzen): In den meisten Systemen nutzt man CREATE OR REPLACE:

CREATE OR REPLACE VIEW MitarbeiterListe AS
SELECT 
    m.Name, 
    a.Abteilungsname,
    m.Gehalt -- Neue Spalte hinzugefügt
FROM Mitarbeiter m
JOIN Abteilungen a ON m.AbteilungID = a.ID;

View löschen:

DROP VIEW MitarbeiterListe;

6. Wichtige Besonderheiten

A. Performance

Da ein View jedes Mal, wenn du ihn aufrufst, die zugrunde liegende Abfrage neu ausführt, bietet er keinen direkten Geschwindigkeitsvorteil. Wenn die Abfrage im View langsam ist, ist auch der View langsam. (Ausnahme: "Materialized Views" in Systemen wie Oracle oder PostgreSQL, die das Ergebnis physisch speichern).

B. Schreibzugriffe (Update)

Kann man Daten über einen View ändern?

  • Ja, wenn der View sehr einfach ist (nur eine Tabelle, keine Gruppierungen/Aggregatfunktionen).
  • Nein, wenn der View komplex ist (Joins, GROUP BY, DISTINCT). In diesem Fall ist er "Read-Only".

C. Abhängigkeiten

Wenn du eine Tabelle löschst, auf die ein View zugreift, wird der View "ungültig" und wirft bei Aufruf einen Fehler.


Zusammenfassung: Wann solltest du Views nutzen?

Szenario Empfehlung
Wiederkehrende komplexe Abfragen Ja, um den SQL-Code sauber zu halten.
Datenschutz / Berechtigungen Ja, um sensible Spalten zu verbergen.
Daten physikalisch schneller machen Nein (dafür nutzt man Indizes oder Materialized Views).
Abstraktion Ja, damit Programme nicht direkt auf Tabellen zugreifen müssen.

Übung für dich: Versuche, einen View zu erstellen, der nur die Mitarbeiter anzeigt, die mehr als 3000 € verdienen. Hinweis: CREATE VIEW ReicheMitarbeiter AS SELECT ... WHERE Gehalt > 3000;

0