15.5. Lesson: Ansichten

Das Schreiben einer Abfrage erfordert viel Zeit und Aufwand. Mit Hilfe von Sichten kann man die Formulierung einer SQL Abfrage in Form einer wiederverwendbaren ‚virtuellen Tabelle‘ speichern.

Ziel dieser Lektion: Das Speichern einer Abfrage als Sicht.

15.5.1. Erstellen einer Sicht

Man kann eine Sicht wie eine Tabelle behandeln, die Daten stammen aber aus einer Abfrage. Sehen wir uns eine einfache Sicht an:

create view roads_count_v as
  select count(people.name), streets.name
  from people, streets where people.street_id=streets.id
  group by people.street_id, streets.name;

Wie man sieht, ist der einzige Unterschied der Teil create view roads_count_v as am Anfang. Wir können nun Daten aus der Sicht auswählen:

select * from roads_count_v;

Ergebnis:

 count |    name
-------+-------------
     1 | Main Road
     2 | High street
     1 | Low Street
(3 rows)

15.5.2. Veränderung einer Sicht

Eine Sicht ist nicht unveränderlich und enthält auch keine ‚echten Daten‘. Das bedeutet, dass sie leicht verändert werden kann, ohne die eigentlichen Daten in der Datenbank zu beeinflussen:

CREATE OR REPLACE VIEW roads_count_v AS
  SELECT count(people.name), streets.name
  FROM people, streets WHERE people.street_id=streets.id
  GROUP BY people.street_id, streets.name
  ORDER BY streets.name;

(Dieses Beispiel zeigt die empfohlene Praxis zur Nutzung von GROSSSCHREIBUNG für alle SQL Schlüsselwörter.)

Wir haben eine ORDER BY Klausel hinzugefügt, so dass die Zeilen der Sicht nun schön geordnet sind:

select * from roads_count_v;

 count |    name
-------+-------------
     2 | High street
     1 | Low Street
     1 | Main Road
(3 rows)

15.5.3. Verwerfen einer Sicht

Wenn man eine Sicht nicht länger benötigt, kann sie wie folgt gelöscht werden:

drop view roads_count_v;

15.5.4. In Conclusion

Mit Hilfe von Sichten kann man Abfragen speichern. Auf die Ausgabe der Abfragen kann man dann wie auf eine Tabelle zugreifen.

15.5.5. What’s Next?

Manchmal möchte man, dass die Ädnerung von bestimmten Daten auch Auswirkungen auf andere Teile der Datenbank hat. In der nächsten Lektion sehen wir, wie man das macht.