CREATE VIEW - Amazon Redshift

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. Um eine Ansicht mit einer externen Tabelle zu erstellen, fügen Sie die NO-Klausel hinzu. WITH SCHEMA BINDING

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 außerdem sicherstellen, dass der Besitzer der Late Binding-Ansicht über Auswahlberechtigungen für die referenzierten Objekte (Tabellen, Ansichten oder benutzerdefinierte Funktionen) verfügt. Weitere Informationen zu Late-Binding-Ansichten finden Sie unter Nutzungshinweise.

Erforderliche Berechtigungen

Für die Verwendung CREATE VIEW ist eine der folgenden Berechtigungen erforderlich.

  • Um eine Ansicht mit CREATE [ODERREPLACE] zu erstellenVIEW:

    • Superuser

    • Benutzer mit der VIEW Berechtigung CREATE [REPLACE]

  • Um eine bestehende Ansicht mit CREATE OR zu ersetzen REPLACEVIEW:

    • Superuser

    • Benutzer mit der CREATE [ODERREPLACE] VIEW -Berechtigung

    • Besitzer der Ansicht

Wenn ein Benutzer auf eine Ansicht zugreifen möchte, die eine benutzerdefinierte Funktion enthält, muss der Benutzer über die EXECUTE entsprechende Berechtigung für diese Funktion verfügen.

Syntax

CREATE [ OR REPLACE ] VIEW name [ ( column_name [, ...] ) ] AS query [ WITH NO SCHEMA BINDING ]

Parameter

ODER 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. CREATEOR REPLACE VIEW sperrt die Ansicht für Lese- und Schreibvorgänge, bis der Vorgang 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 ausgewertet wird. Diese Tabelle definiert die Spalten und Zeilen in der Ansicht.

WITHNEIN 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 SCHEMA BINDING NO-Klausel einbeziehen, müssen Tabellen und Ansichten, auf die in der SELECT Anweisung verwiesen wird, 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.

Um eine Late-Binding-Ansicht zu erstellen, fügen Sie die WITH SCHEMA BINDING NO-Klausel hinzu. 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, um die Amazon Redshift SALES Redshift-Tabelle und die Redshift SPECTRUM.SALES Spectrum-Tabelle zu verbinden.

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 wird 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, der als Datenbank bezeichnet wird. TICKIT Weitere Informationen finden Sie unter Beispieldatenbank.

Der folgende Befehl erstellt eine Ansicht namens myevent aus einer Tabelle mit dem NamenEVENT.

create view myevent as select eventname from event where eventname = 'LeAnn Rimes';

Der folgende Befehl erstellt eine Ansicht namens myuser aus einer Tabelle mit dem Namen. USERS

create view myuser as select lastname from users;

Der folgende Befehl erstellt oder ersetzt eine Ansicht mit dem Namen 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;