Database Reference
In-Depth Information
Views
Wäre es nicht schön, wenn wir das Ergebnis einer komplexen Query so nut-
zen könnten wie jede andere Tabelle? Nun, genau dafür sind
VIEW
sgedacht.
Im Gegensatz zu Stored Procedures handelt es sich dabei nicht um auszu-
führende Funktionen, sondern um Aliase für Queries.
In unserer Datenbank enthalten alle Feiertage das Wort
Day
und es gibt kei-
nen Veranstaltungsort.
postgres/holiday_view_1.sql
CREATE
VIEW holidays
AS
SELECT
event
_
id
AS
holiday
_
id, title
AS
name, starts
AS date
FROM
events
WHERE
title
LIKE
'%Day%'
AND
venue
_
id IS NULL;
Um also einen View zu erzeugen, müssen Sie nur eine Query schreiben und
ihr ein
CREATE VIEW view
_
name AS
voranstellen. Nun können Sie
holidays
wie jede andere Tabelle abfragen. Hinter den Kulissen werkelt die gute al-
te
events
-Tabelle. Zum Beweis fügen Sie den
Valentinstag
am
14.2.2012
in
events
ein und fragen dann den
holidays
-View ab.
SELECT
name, to
_
char(
date
,
'Month DD, YYYY'
)
AS date
FROM
holidays
WHERE date
<=
'2012-04-01'
;
name | date
-----------------+--------------------
April Fools Day | April 01, 2012
Valentine's Day | February 14, 2012
Views sind ein mächtiges Werkzeug, um auf einfache Weise auf komplex ab-
gefragte Daten zugreifen zu können. Die dahinterstehende Query kann noch
so kompliziert sein, Sie sehen nur eine Tabelle.
Soll eine neue Spalte in den View eingefügt werden, muss das in der zugrun-
deliegenden Tabelle geschehen. Lassen Sie uns die
events
-Tabelle um ein
Array mit assoziierten Farben erweitern.
ALTER
TABLE
events
ADD colors
text
ARRAY;
Da die Farben auch in
holidays
auftauchen sollen, müssen wir die
VIEW
-
Query um das
colors
-Array ergänzen.
CREATE OR REPLACE
VIEW holidays
AS
SELECT
event
_
id
AS
holiday
_
id, title
AS
name, starts
AS date
, colors
FROM
events
WHERE
title
LIKE
'%Day%'
AND
venue
_
id IS NULL;