- Kategorien:
CREATE MATERIALIZED VIEW¶
Erstellt eine neue materialisierte Ansicht im aktuellen/angegebenen Schema auf Grundlage einer Abfrage einer vorhandenen Tabelle und füllt die Ansicht mit entsprechenden Daten aus.
Weitere Details dazu finden Sie unter Verwenden von materialisierten Ansichten.
Syntax¶
CREATE [ OR REPLACE ] [ SECURE ] MATERIALIZED VIEW [ IF NOT EXISTS ] <name>
[ COPY GRANTS ]
( <column_list> )
[ COMMENT = '<string_literal>' ]
[ CLUSTER BY ( <expr1> [, <expr2> ... ] ) ]
AS <select_statement>
Erforderliche Parameter¶
Name
Gibt den Bezeichner für die Ansicht an. Dieser muss für das Schema, in dem die Ansicht erstellt wird, eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"
). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.
Select-Anweisung
Gibt die Abfrage an, die zum Erstellen der Ansicht verwendet wird. Diese Abfrage dient als Text/Definition für die Ansicht. Diese Abfrage wird in der Ausgabe von SHOW VIEWS, SHOW MATERIALIZED VIEWS und der Ansicht VIEWS Information Schema angezeigt.
Für
Select-Anweisung
gelten Einschränkungen. Weitere Details dazu finden Sie unter:
Optionale Parameter¶
Spaltenliste
:Wenn Sie nicht möchten, dass die Spaltennamen in der Ansicht den Spaltennamen der zugrunde liegenden Tabelle entsprechen, können Sie eine Spaltenliste hinzufügen, in der Sie die Spaltennamen angeben. (Sie müssen die Datentypen der Spalten nicht angeben.)
Wenn Sie eine CLUSTER BY-Klausel für die materialisierte Ansicht angeben, müssen Sie die Spaltennamenliste einschließen.
Zeichenfolgenliteral
Gibt einen Kommentar für die Ansicht an. Das Zeichenfolgenliteral sollte in einfache Anführungszeichen gesetzt werden. (Das Zeichenfolgenliteral sollte keine einfachen Anführungszeichen enthalten, es sei denn, es werden Escapezeichen verwendet.)
Standard: Kein Wert.
Ausdruck#
Gibt einen Ausdruck an, für den die materialisierte Ansicht geclustert werden soll. Normalerweise ist jeder Ausdruck der Name einer Spalte in der materialisierten Ansicht.
Weitere Informationen zum Clustering materialisierter Ansichten finden Sie unter Materialisierte Ansichten und Clustering. Weitere Informationen zum Clustering im Allgemeinen finden Sie unter Was ist Daten-Clustering?.
SECURE
Gibt an, dass die Ansicht sicher ist. Weitere Informationen zu sicheren Ansichten finden Sie unter Verwenden von sicheren Ansichten.
Standard: Kein Wert (Ansicht ist nicht sicher)
COPY GRANTS
Wenn Sie eine vorhandene Ansicht mithilfe der
OR REPLACE
-Klausel ersetzen, behält die Ersatzansicht die Zugriffsberechtigungen der ursprünglichen Ansicht bei. Dieser Parameter kopiert alle Berechtigungen, außer OWNERSHIP, aus der vorhandenen Ansicht in die neue Ansicht. Die neue Ansicht übernimmt keine zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert werden. Die Rolle, die die Anweisung CREATE MATERIALIZED VIEW ausführt, besitzt standardmäßig die neue Ansicht.Wenn der Parameter nicht in der CREATE VIEW-Anweisung enthalten ist, übernimmt die neue Ansicht keine expliziten Zugriffsberechtigungen für die ursprüngliche Ansicht, übernimmt aber alle zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert werden.
Beachten Sie, dass die Operation zum Kopieren von Berechtigungen atomar mit der CREATE VIEW-Anweisung erfolgt (d. h. innerhalb derselben Transaktion).
Standard: Kein Wert (Berechtigungen werden nicht kopiert)
Nutzungshinweise¶
Das Erstellen einer materialisierten Ansicht erfordert die CREATE MATERIALIZED VIEW-Berechtigung für das Schema und die SELECT-Berechtigung für die Basistabelle. Weitere Informationen zu Berechtigungen und materialisierten Ansichten finden Sie unter Berechtigungen für das Schema einer materialisierten Ansicht.
Wenn Sie einen Namen für die materialisierte Ansicht wählen, beachten Sie, dass ein Schema keine Tabelle und keinen Ansicht gleichen Namens enthalten darf. Eine CREATE [ MATERIALIZED ] VIEW-Anweisung erzeugt einen Fehler, wenn im Schema bereits eine Tabelle mit dem gleichen Namen existiert.
Beachten Sie bei der Angabe der
Select-Anweisung
das Folgende:Sie Dürfen weder eine HAVING-Klausel noch eine ORDER BY-Klausel angeben.
Wenn Sie eine CLUSTER BY-Klausel für die materialisierte Ansicht angeben, müssen Sie die
Spaltenliste
-Klausel einfügen.Wenn Sie in der
Select-Anweisung
mehr als einmal auf die Basistabelle verweisen, verwenden Sie für alle Verweise auf die Basistabelle denselben Qualifizierer.Verwenden Sie z. B. keine Mischung aus
base_table
,schema.base_table
unddatabase.schema.base_table
in derselbenSelect-Anweisung
. Wählen Sie stattdessen eine dieser Formen (z. B.database.schema.base_table
) aus, und verwenden Sie diese konsistent in der gesamtenSelect-Anweisung
.
Für materialisierte Ansichten gelten andere Einschränkungen. Weitere Details dazu finden Sie unter Einschränkungen beim Erstellen materialisierter Ansichten und Einschränkungen bei der Verwendung von materialisierten Ansichten.
Ansichtsdefinitionen werden nicht aktualisiert, wenn das Schema der zugrunde liegenden Quelltabelle geändert wird, sodass die Ansichtsdefinition ungültig wird. Beispiel:
Es wird eine Ansicht erstellt, die auf eine bestimmte Spalte einer Quelltabelle verweist, und die Spalte wird anschließend aus der Tabelle gelöscht.
Eine Ansicht wird mit
SELECT *
für eine Tabelle erstellt, und jede Spalte wird anschließend aus der Tabelle gelöscht.
In beiden Szenarien gibt die Abfrage der Ansicht einen Fehler zurück.
Wenn die Quelltabelle einer materialisierten Ansicht gelöscht wird, gibt die Abfrage der Ansicht folgenden Fehler zurück:
Materialized View <Ansichtsname> is invalid
.
Beispiele¶
Erstellen Sie im aktuellen Schema eine materialisierte Ansicht inklusive Kommentar, die alle Zeilen einer Tabelle auswählt:
CREATE MATERIALIZED VIEW mymv COMMENT='Test view' AS SELECT col1, col2 FROM mytable;
Weitere Beispiele finden Sie in den Beispielen in Verwenden von materialisierten Ansichten.