Ansichten können als virtuelle Tabellen angesehen werden. Allgemein ließe sich sagen, dass eine Tabelle über einen Satz von Definitionen verfügt und Daten physikalisch abspeichert. Eine Ansicht verfügt ebenfalls über einen Satz von Definitionen, die auf einer oder mehreren Tabellen oder anderen Ansichten aufbauen, speichert die Daten aber nicht physikalisch ab.
Die Syntax für die Erzeugung einer Ansicht sieht folgendermaßen aus:
CREATE VIEW "SICHT_NAME" AS "SQL-Anweisung"
"SQL-Anweisung" kann irgendeine der in diesem Tutorial besprochenen Anweisungen sein.
Nehmen wir zur Verdeutlichung ein einfaches Beispiel. Dabei gehen wir von folgender Tabelle aus:
Tabelle Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)
Wir möchten nun eine Ansicht mit der Bezeichnung V_Customer erzeugen, die nur die Spalten Vorname, Nachname und Land dieser Tabelle enthält. Dazu geben wir ein:
CREATE VIEW V_Customer
AS SELECT First_Name, Last_Name, Country
FROM Customer
Wir haben nun eine Ansicht V_Customer mit folgender Struktur:
Ansicht V_Customer
(First_Name char(50),
Last_Name char(50),
Country char(25))
Es ist auch möglich, mit einer Ansicht zwei Tabellen zu kombinieren. In diesem Fall haben die Anwender statt zwei Tabellen nur eine Ansicht vor sich, was die SQL-Anweisung deutlich einfacher macht. Nehmen wir an, es liegen die folgenden zwei Tabellen vor,
Tabelle Store_Information
| store_name |
Sales |
Date |
| Los Angeles |
1500€ |
05.Jan.1999 |
| San Diego |
250€ |
07.Jan.1999 |
| Los Angeles |
300€ |
08.Jan.1999 |
| Boston |
700€ |
08.Jan.1999 |
Tabelle Geography
| region_name |
store_name |
| East |
Boston |
| East |
New York |
| West |
Los Angeles |
| West |
San Diego |
und wir möchten eine Ansicht erstellen, die den Umsatz nach Regionen zeigt. Dazu würden wir folgende SQL-Anweisung verwenden:
CREATE VIEW V_REGION_SALES
AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES
FROM Geography A1, Store_Information A2
WHERE A1.store_name = A2.store_name
GROUP BY A1.region_name
Damit definieren wir eine Ansicht V_REGION_SALES, die Umsätze anhand von Regionsdatensätzen abspeichert. Um den Inhalt dieser Ansicht herauszufinden, geben wir ein:
SELECT * FROM V_REGION_SALES
Ergebnis:
| REGION |
SALES |
| East |
700€ |
| West |
2050€ |