Direkt zum Hauptinhalt springen
eLearner.app
Modul 9 · Lektion 4 von 436/57 im Kurs~12 min
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!

SQL
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:

SQL
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:

SQL
DROP VIEW user_spending;

Probieren Sie es aus

Übung#sql.m9.l4.e1
Versuche: 0Wird geladen…

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.

Editor wird geladen…
Hinweis anzeigen

Schreiben Sie CREATE VIEW view_name AS SELECT ... FROM ... WHERE ...

Lösung nach 3 Versuchen verfügbar

Aufrufen einer Ansicht

Übung#sql.m9.l4.e2
Versuche: 0Wird geladen…

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.

Editor wird geladen…
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