Erstellt eine View. Eine View ist eine “virtuelle Tabelle”.
CREATE VIEW produkte_view ASSELECT ...-- View anfragenSELECT * FROM produkte_view
CREATE VIEW teure_produkte AS SELECT * FROM produkte WHERE preis > 10SELECT * FROM teure_produkte WHERE hersteller = 'Monsterfood'-- Wird ausgeführt alsSELECT *FROM (SELECT * FROM produkte WHERE preis > 10) WHERE hersteller = 'Monsterfood'
Explain
Gibt die optimierte Query zurück
EXPLAIN SELECT * FROM teure_produkte
Einsatz von Views:Vereinfachung, Datenunabhängigkeit (egal wie das interne Schema ist, die Anwendungen können einfach über die View zugreifen), Datenschutz (Man erlaubt nur Anfragen auf die Views zu für SIcherheit)
INSERT, UPDATE und DELETE sind auf simplen Projektion/Selektion-Views erlaubt
CHECK OPTION
Stellt sicher, dass beim ändern der Tabelle das WHERE-Prädikat erfüllt sein muss
CREATE VIEW teure_produkte ASSELECT *FROM produkte WHERE preis > 10WITH CHECK OPTION-- Sowas wäre nicht mehr möglich (Kosten 2 < 10):INSERT INTO teure_produkte VALUES (100, 'Apfel', 2, NULL);
MATERIALIZED VIEW - Materialistische Schichten
Views sind nur virtuell, sie speichern nicht wirklich Daten. Materialized Views speichern jedoch tatsächlich das Ergebnis der Anfrage zum Anfragezeitpunkt. Um die Daten zu aktualisieren, müssen sie refreshed werden.
CREATE MATERIALIZED VIEW anz_produkte ASSELECT COUNT(*) AS anz FROM produkteREFRESH MATERIALIZED VIEW anz_produkte