SQL-Views verstehen und erstellen: Eine Schritt-für-Schritt-Anleitung
In relationalen Datenbanken ist eine View (deutsch: Sicht) eines der nützlichsten Werkzeuge. Einfach gesagt ist eine View eine virtuelle Tabelle, die auf dem Ergebnis einer SQL-Abfrage basiert. Sie speichert selbst keine physischen Daten, sondern zieht sich die Daten bei jedem Aufruf dynamisch aus den zugrundeliegenden Tabellen.
In diesem Tutorial lernst du, warum man Views nutzt, wie man sie erstellt, abfragt und wieder verwaltet.
Warum sollte man Views verwenden?
- Komplexität reduzieren: Lange, komplizierte Abfragen mit vielen Verknüpfungen (
JOINs) müssen nur einmal geschrieben werden. Danach reicht ein einfacher Aufruf. - Sicherheit: Du kannst Benutzern Zugriff auf eine View gewähren, ohne ihnen Zugriff auf die eigentlichen Basistabellen zu geben (z. B. sensible Gehaltsdaten ausblenden).
- Konsistenz: Alle Nutzer und Anwendungen greifen auf dieselbe Geschäftslogik zu.
Die Ausgangslage (Beispiel)
Stellen wir uns eine einfache Datenbank eines Online-Shops vor. Wir haben zwei Tabellen:
Kunden: EnthältKundenID,Vorname,Nachname,PasswortHashBestellungen: EnthältBestellID,KundenID,Produkt,Preis
Schritt 1: Eine View erstellen (CREATE VIEW)
Wir möchten eine Sicht erstellen, die den vollen Namen des Kunden mit seinen bestellten Produkten anzeigt. Sensible Daten wie der PasswortHash sollen weggelassen werden.
Die grundlegende Syntax lautet:
CREATE VIEW view_name AS
SELECT spalte1, spalte2
FROM tabelle
WHERE bedingung;
Unser Beispiel:
CREATE VIEW KundenBestelluebersicht AS
SELECT
k.Vorname,
k.Nachname,
b.Produkt,
b.Preis
FROM Kunden k
JOIN Bestellungen b ON k.KundenID = b.KundenID;
Schritt 2: Die View abfragen
Sobald die View erstellt wurde, kannst du sie wie eine ganz normale Tabelle abfragen.
Einfache Abfrage:
SELECT * FROM KundenBestelluebersicht;
Filtern und Sortieren innerhalb der View: Du kannst alle gewohnten SQL-Befehle auf die View anwenden:
SELECT Nachname, Produkt
FROM KundenBestelluebersicht
WHERE Preis > 50.00
ORDER BY Nachname ASC;
Schritt 3: Eine View ändern (ALTER oder REPLACE)
Möchtest du die Spalten oder die Logik deiner View ändern, kannst du sie überschreiben. Die Syntax unterscheidet sich je nach Datenbanksystem (z. B. PostgreSQL, MySQL, SQL Server) leicht. Am weitesten verbreitet ist:
CREATE OR REPLACE VIEW KundenBestelluebersicht AS
SELECT
k.Vorname,
k.Nachname,
b.Produkt,
b.Preis,
(b.Preis * 0.19) AS Mehrwertsteuer -- Neue Spalte hinzugefügt
FROM Kunden k
JOIN Bestellungen b ON k.KundenID = b.KundenID;
Schritt 4: Eine View löschen (DROP VIEW)
Wenn du eine View nicht mehr benötigst, kannst du sie einfach löschen.
Wichtig: Das Löschen einer View löscht nicht die Daten in den ursprünglichen Tabellen (Kunden oder Bestellungen). Es wird nur die "gespeicherte Abfrage" entfernt.
DROP VIEW KundenBestelluebersicht;
Zusammenfassung & Best Practices
- Namenskonventionen: Es ist oft hilfreich, Views mit einem Präfix zu benennen (z. B.
v_KundenBestellungen), damit Entwickler sofort sehen, dass es sich nicht um eine physische Tabelle handelt. - Performance im Auge behalten: Da Standard-Views jedes Mal neu berechnet werden, können Views, die auf riesigen Datenmengen basieren, langsam sein. Für solche Fälle bieten manche Datenbanksysteme sogenannte Materialized Views an, die Ergebnisse zwischenspeichern.