Lektionen des Moduls (4/4)
Views und Datenabstraktion
Im Laufe unserer Lektionen werden Sie bemerkt haben, dass Abfragen (insbesondere komplexe JOINs oder Aggregationen wie GROUP BY) langsam lang werden und voller Regeln und Berechnungen sind.
Was wäre, wenn es eine Möglichkeit gäbe, die abgeschlossene Abfrage gedanklich zu speichern und vor der Ansicht zu verbergen und von da an so zu tun, als wäre sie im Grunde genommen eine normale „Tabelle“ der Datenbank?
Willkommen in der Welt der Ansichten.
ANSICHT ERSTELLEN
Eine Ansicht ist im Wesentlichen eine persistente, benannte SQL-Abfrage, verhält sich jedoch genau wie eine „virtuelle“ Tabelle!
CREATE VIEW user_spending AS
SELECT
c.id,
c.first_name,
SUM(o.amount) as total_spent
FROM customers c
JOIN orders o ON c.id = o.customer_id
GROUP BY c.id;Erledigt! Anstatt JOIN und GROUP BY immer wiederholen zu müssen, müssen Sie jetzt nur noch völlig normale Abfragen schreiben:
SELECT * FROM user_spending WHERE total_spent > 100;
-- Postgres dietro le quinte richiamerà automaticamente la grande formula.Ansichten und „Echtzeitdaten“
Ein sehr verbreiteter Mythos besagt, dass Views die Daten nehmen, Summen wie Preise oder Rankings berechnen und einen traurigen, dauerhaften Schnappschuss, wie ein Foto, erzeugen. Falsch (fast immer)! Standardmäßig sind Ansichten virtuell: Jedes Mal, wenn Sie den Namen einer Ansicht in Ihr SELECT eingeben, führt Postgres hinter den Kulissen Ihre Anfrage zusammen, indem es eine Echtzeitberechnung basierend auf dem Status der Datenbank genau in dieser Millisekunde durchführt. So werden Sie niemals veraltete Daten lesen.
Wozu dienen sie?
- Einfachheit: Ansichten schützen externe Apps vor Änderungen. Wenn das Frontend-Team weiß, dass es Daten aus der
top_selling-Ansicht lesen muss, muss es sich keine Sorgen machen, wenn wir morgen die Datenbank ändern, indem wir drei Zwischenbeziehungen hinzufügen, um die Top-Seller herauszuziehen! - Sicherheit und Trennung: In großen Datenbanken kann eine Ansicht einen Teil der Benutzerdaten vorab auswählen und vor externen Entwicklern verbergen, sodass ihnen (zum Beispiel) nur Zugriff auf eine Unteransicht von Analysen ohne echte Namen gewährt wird.
Eine Ansicht löschen
Wenn Sie sie nicht mehr benötigen, fahren Sie wie bei Tabellen mit dem Befehl DROP fort:
DROP VIEW user_spending;Probieren Sie es aus
Erstellen Sie eine Ansicht (VIEW) mit dem Namen „high_value_products“. Es muss sich wie ein Container verhalten, der alle drei wesentlichen Felder (`id`, `name`, `price`) aus der Tabelle „Produkte“ auswählt, ABER nur und immer für die Produkte, deren „Preis“ größer als 50,00 ist.
Hinweis anzeigen
Schreiben Sie CREATE VIEW view_name AS SELECT ... FROM ... WHERE ...
Lösung nach 3 Versuchen verfügbar
Aufrufen einer Ansicht
Da jede Übung auf der Plattform in einer isolierten (und sauberen) Umgebung ausgeführt wird, ist die vorherige Ansicht in diesem Schritt nicht mehr vorhanden. Erstellen Sie die Ansicht „high_value_products“ neu (immer noch mit Produkten mit einem Preis > 50) und führen Sie dann in der unmittelbar folgenden Zeile eine SELECT-Anweisung für den gesamten Inhalt nach absteigendem Preis sortiert (DESC) aus, um zu überprüfen, ob sie funktioniert.
Hinweis anzeigen
Vergessen Sie nicht das ; zwischen SQL-Anweisungen (am Ende der ersten Zeile einfügen)! Dadurch kann Postgres die beiden Aufgaben nacheinander ausführen.
Lösung nach 3 Versuchen verfügbar