Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
CREATE VIEW
Erstellt eine Ansicht in einer Datenbank. Die Ansicht wird nicht physisch umgesetzt; die Abfrage, mit der die Ansicht definiert wird, wird jedes Mal ausgeführt, wenn die Ansicht in einer Abfrage referenziert wird. Zum Erstellen einer Ansicht mit einer externen Tabelle fügen Sie die Klausel WITH NO SCHEMA BINDING ein.
Um eine Standardansicht erstellen zu können, benötigen Sie Zugriff auf die zugrunde liegenden Tabellen oder Ansichten. Zum Abfragen einer Standardansicht benötigen Sie ausgewählte Berechtigungen für die Ansicht selbst, jedoch nicht für die zugrundeliegenden Tabellen. Wenn Sie eine Ansicht erstellen, die auf eine Tabelle oder Ansicht in einem anderen Schema oder auf eine materialisierte Ansicht verweist, benötigen Sie Nutzungsberechtigungen. Zum Abfragen einer Late-Binding-Ansicht benötigen Sie SELECT-Berechtigungen für die Late-Binding-Ansicht selbst. Sie sollten sicherstellen, dass der Eigentümer der Ansicht mit später Bindung über Auswahlsonderrechte auf die verwiesenen Objekte (Tabellen, Ansichten oder benutzerdefinierte Funktionen) verfügt. Weitere Informationen zu Late-Binding-Ansichten finden Sie unter Nutzungshinweise.
Erforderliche Berechtigungen
Für CREATE VIEW sind folgende Berechtigungen erforderlich:
Für CREATE VIEW:
Superuser
Benutzer mit der Berechtigung CREATE [OR REPLACE] VIEW
Für REPLACE VIEW:
Superuser
Benutzer mit der Berechtigung CREATE [OR REPLACE] VIEW
Besitzer der Ansicht
Syntax
CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query [ WITH NO SCHEMA BINDING ]
Parameter
- OR REPLACE
-
Wenn bereits eine Ansicht mit demselben Namen vorhanden ist, wird die Ansicht ersetzt. Sie können eine Ansicht nur durch eine neue Abfrage ersetzen, die einen identischen Satz von Spalten generiert und dieselben Spaltennamen und Datentypen verwendet. CREATE OR REPLACE VIEW sperrt die Ansicht für Lese- und Schreibvorgänge, bis die Operation abgeschlossen ist.
Wenn eine Ansicht ersetzt wird, bleiben ihre anderen Eigenschaften, wie z. B. Eigentümerschaft und gewährte Berechtigungen, erhalten.
- Name
-
Der Name der Ansicht. Wenn ein Schemaname angegeben ist (wie
myschema.myview
), wird die Ansicht mithilfe des angegebenen Schemas erstellt. Andernfalls wird die Ansicht im aktuellen Schema erstellt. Der Name der Ansicht muss sich von den Namen anderer Ansichten oder Tabellen im selben Schema unterscheiden.Wenn Sie einen Ansichtnamen angeben, der mit „#“ beginnt, wird die Ansicht als temporäre Ansicht erstellt, die nur in der aktuellen Sitzung angezeigt wird.
Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen. Sie können in den Systemdatenbanken template0, template1, padb_harvest oder sys:internal keine Tabellen oder Ansichten erstellen.
- column_name
-
Optionale Liste von Namen, die für die Spalten in der Ansicht verwendet werden sollen. Wenn keine Spaltennamen angegeben werden, werden die Spaltennamen aus der Abfrage abgeleitet. Die maximale Anzahl der Spalten, die Sie in einer einzelnen Ansicht definieren können, ist 1.600.
- query
-
Eine Abfrage (in Form einer SELECT-Anweisung), die zu einer Tabelle evaluiert. Diese Tabelle definiert die Spalten und Zeilen in der Ansicht.
- WITH NO SCHEMA BINDING
-
Klausel, die angibt, dass die Ansicht nicht an die zugrunde liegenden Datenbankobjekte gebunden ist, wie etwa Tabellen und benutzerdefinierte Funktionen. Deshalb besteht keine Abhängigkeit zwischen der Ansicht und den Objekten, auf die sie verweist. Sie können sogar eine Ansicht erstellen, wenn die referenzierten Objekte nicht vorhanden sind. Da keine Abhängigkeit besteht, können Sie ein referenziertes Objekt entfernen oder ändern, ohne die Ansicht zu beeinflussen. Amazon Redshift sucht erst nach Abhängigkeiten, wenn die Ansicht abgefragt wird. Um Details über Late-Binding-Ansichten anzuzeigen, führen Sie die Funktion PG_GET_LATE_BINDING_VIEW_COLS aus.
Wenn Sie die WITH NO SCHEMA BINDING-Klausel einbeziehen, müssen Tabellen und Ansichten, die in der SELECT-Anweisung referenziert werden, mit einem Schemanamen qualifiziert werden. Das Schema muss vorhanden sein, wenn die Ansicht erstellt wird, auch wenn die referenzierte Tabelle nicht vorhanden ist. Die folgende Anweisung gibt beispielsweise einen Fehler zurück.
create view myevent as select eventname from event with no schema binding;
Die folgende Anweisung wird erfolgreich ausgeführt.
create view myevent as select eventname from public.event with no schema binding;
Anmerkung
Sie können für eine Ansicht keine Aktualisierungen, Einfügungen oder Löschungen ausführen.
Nutzungshinweise
Ansichten mit später Bindung
Eine Ansicht mit später Bindung prüft zugrunde liegende Datenbankobjekte wie Tabellen und andere Ansichten erst, wenn die Ansicht abgefragt wird. Daher können Sie die zugrunde liegenden Objekte ändern oder weglassen, ohne die Ansicht wegzulassen oder neu zu erstellen. Wenn Sie zugrundeliegende Objekte weglassen, schlagen Anfragen an die Ansicht mit später Bindung fehl. Wenn die Abfrage der Ansicht mit später Bindung auf Spalten in dem zugrundeliegenden Objekt verweist, die nicht vorhanden sind, schlägt die Abfrage fehl.
Wenn Sie die zugrundeliegende Tabelle oder Ansicht einer Ansicht mit später Bildung weglassen und danach erneut erstellen, wird das neue Objekt mit Standard-Zugriffsberechtigungen erstellt. Sie müssen möglicherweise Benutzern, die die Ansicht abfragen werden, Berechtigungen für die zugrundeliegenden Objekte erteilen.
Zum Erstellen einer Ansicht mit später Bindung fügen Sie die Klausel WITH NO SCHEMA BINDING ein. Im folgenden Beispiel wird eine Ansicht ohne Schemabindung erstellt.
create view event_vw as select * from public.event with no schema binding;
select * from event_vw limit 1;
eventid | venueid | catid | dateid | eventname | starttime --------+---------+-------+--------+---------------+-------------------- 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00
Das folgende Beispiel zeigt, dass Sie eine zugrunde liegende Tabelle ändern können, ohne die Ansicht neu zu erstellen.
alter table event rename column eventname to title;
select * from event_vw limit 1;
eventid | venueid | catid | dateid | title | starttime --------+---------+-------+--------+---------------+-------------------- 2 | 306 | 8 | 2114 | Boris Godunov | 2008-10-15 20:00:00
Sie können externe Amazon-Redshift-Spectrum-Tabellen nur in Ansichten mit später Bindung referenzieren. Eine Anwendung von Ansichten mit später Bindung dient zum Abfragen der Amazon-Redshift- und Redshift-Spectrum-Tabellen. Beispiel: Sie können den Befehl UNLOAD verwenden, um ältere Daten in Amazon S3 zu archivieren. Erstellen Sie anschließend eine externe Redshift-Spectrum-Tabelle, die die Daten in Amazon S3 referenziert, und erstellen Sie eine Ansicht, die beide Tabellen abfragt. Das folgende Beispiel verwendet eine UNION ALL-Klausel zur Verbindung der SALES
-Tabelle aus Amazon Redshift und der SPECTRUM.SALES
-Tabelle aus Redshift Spectrum.
create view sales_vw as select * from public.sales union all select * from spectrum.sales with no schema binding;
Weitere Informationen zum Erstellen externer Redshift Spectrum-Tabellen, einschließlich der SPECTRUM.SALES
-Tabelle finden Sie unter Erste Schritte mit Amazon Redshift Spectrum.
Wenn Sie eine Standardansicht aus einer Late-Binding-Ansicht erstellen, enthält die Definition der Standardansicht die Definition der Late-Binding-Ansicht zu dem Zeitpunkt, an dem die Standardansicht erstellt wurde. Die Abhängigkeit der Late-Binding-Ansicht wird nicht nachverfolgt, so dass Änderungen an der Late-Binding-Ansicht in der Standardansicht nicht nachverfolgt werden.
Um die Standardansicht so zu aktualisieren, dass sie auf die neueste Definition der Late-Binding-Ansicht verweist, führen Sie CREATE OR REPLACE VIEW mit der ursprünglichen Ansichtsdefinition aus, mit der Sie die Standardansicht erstellt haben.
Im folgenden Beispiel sehen Sie das Erstellen einer Standardansicht aus einer Late-Binding-Ansicht.
create view sales_vw_lbv as select * from public.sales with no schema binding; show view sales_vw_lbv; Show View DDL statement -------------------------------------------------------------------------------- create view sales_vw_lbv as select * from public.sales with no schema binding; (1 row) create view sales_vw as select * from sales_vw_lbv; show view sales_vw; Show View DDL statement --------------------------------------------------------------------------------------------------------------------- SELECT sales_vw_lbv.price, sales_vw_lbv."region" FROM (SELECT sales.price, sales."region" FROM sales) sales_vw_lbv; (1 row)
Beachten Sie, dass die Late-Binding-Ansicht, wie sie in der DDL-Anweisung für die Standardansicht gezeigt wird, beim Erstellen der Standardansicht definiert und nicht aktualisiert wird, wenn Sie danach Änderungen an der Late-Binding-Ansicht vornehmen.
Beispiele
In den Beispielbefehlen wird ein Beispielsatz von Objekten und Daten verwendet, die sogenannte TICKIT-Datenbank. Weitere Informationen finden Sie unter Beispieldatenbank.
Der folgende Befehl erstellt eine Ansicht namens myevent aus einer Tabelle namens EVENT.
create view myevent as select eventname from event where eventname = 'LeAnn Rimes';
Der folgende Befehl erstellt eine Ansicht namens myuser aus einer Tabelle namens USERS.
create view myuser as select lastname from users;
Der folgende Befehl erstellt oder ersetzt eine Ansicht namens myuser aus einer Tabelle namens USERS.
create or replace view myuser as select lastname from users;
Im folgenden Beispiel wird eine Ansicht ohne Schemabindung erstellt.
create view myevent as select eventname from public.event with no schema binding;