Views
Manche Abfragen werden immer wieder gebraucht: Die Chefin will jede Woche die Summen der Bestellungen, und der Support sucht ständig nach den Spielen, die schon erschienen sind. Eine View gibt einer Abfrage einen Namen, und dann kannst du sie verwenden, als wäre sie eine Tabelle:
CREATE VIEW erschienene_spiele AS
SELECT titel, genre, preis
FROM spiele
WHERE erschienen IS NOT NULL;Nach CREATE VIEW kommen der Name und AS, dann ein gewöhnliches SELECT. Die View wird dann wie jede Tabelle abgefragt, mit WHERE, ORDER BY, Joins und allem:
SELECT titel, preis
FROM erschienene_spiele
WHERE genre = 'Action'
ORDER BY preis;| titel | preis |
|---|---|
| Shadow Ninja | 25 |
| Zombie Town | 30 |
| Star Pilots | 35 |
Eine View enthält keine eigenen Zeilen. Sie speichert nur die Abfrage, und die Datenbank führt sie aus, wann immer du die View verwendest. Eine View zeigt also immer die aktuellen Daten: Wenn Robot Rebellion sein Erscheinungsdatum bekommt, taucht es unter den erschienenen Spielen auf, und niemand muss die View ändern:
UPDATE spiele
SET erschienen = '2026-02-27'
WHERE id = 18;
SELECT titel, preis
FROM erschienene_spiele
WHERE genre = 'Action'
ORDER BY preis;| titel | preis |
|---|---|
| Shadow Ninja | 25 |
| Zombie Town | 30 |
| Star Pilots | 35 |
| Robot Rebellion | 40 |
Views sind praktisch für lange Abfragen mit Joins und Gruppen, die andere dann verwenden können, ohne zu wissen, wie sie funktionieren, und für Berechnungen, die überall gleich durchgeführt werden sollen. Eine View kann auch Spalten weglassen, die manche Leute nicht sehen sollen. Die Spalten einer View heißen wie in ihrem SELECT.
Eine View kannst du nur lesen: INSERT, UPDATE und DELETE darauf schlagen mit cannot modify erschienene_spiele because it is a view fehl. Die Daten werden in den Tabellen geändert, die die View liest. Eine View, die du nicht mehr brauchst, löschst du mit DROP VIEW erschienene_spiele;, und eine View, die du ändern willst, löschst du und erstellst sie neu. Wie die Tabellen, die du erstellst, erscheinen Views nicht im Tab Tabellen.
Typischer Fehler: eine berechnete Spalte ohne Alias. In einer View aus SELECT genre, SUM(preis) FROM spiele GROUP BY genre heißt die zweite Spalte SUM(preis), was in Abfragen auf die View umständlich zu verwenden ist. Mit SUM(preis) AS gesamt heißt sie einfach gesamt.
So schreibst du es:
Anweisungen
- 1
Erstelle eine View
bestellsummenmit einer Zeile für jede bezahlte Bestellung und diesen Spalten:bestellung_id(die ID der Bestellung),kunde(der Name des Kunden),bestellt_amundgesamt(was die Positionen der Bestellung zusammen kosten: die Menge mal den Preis jeder Position inpositionen). Zeige darunter aus der View die drei Bestellungen mit der höchsten Summe; bei gleichen Summen zuerst die mit der kleinerenbestellung_id:bestellung_id kunde bestellt_am gesamt 11 Lukas Neumann 2024-09-30 85 14 Emma Becker 2024-12-20 75 5 Noah Winter 2024-04-02 65 - 2
Zeige mit der View, wie viel jeder Kunde ausgegeben hat, in den Spalten
kundeundausgegeben, sortiert nach dem Betrag, der größte zuerst, und Kunden mit demselben Betrag nach dem Namen. Das Ergebnis beginnt so:kunde ausgegeben Emma Becker 200 Lukas Neumann 150 Noah Winter 150 Olivia Braun 150 Jonas Hartmann 95 Oskar Klein 95 … … - 3
Eine View zeigt immer die aktuellen Daten. Füge am Ende der Datei eine neue bezahlte Bestellung hinzu: Bestellung 31 von Hannes Schulz (Kunde 12) vom 30.12.2025 mit einem Exemplar von Knight's Oath (Spiel 15), das er in einem Sale für 50 € bekommen hat. Zeige dann alle Spalten der Zeilen der View, deren Kunde Hannes Schulz ist:
bestellung_id kunde bestellt_am gesamt 31 Hannes Schulz 2025-12-30 50