Kategorien:

DDL für Tabellen, Ansichten und Sequenzen

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.

Siehe auch:

ALTER MATERIALIZED VIEW, DROP MATERIALIZED VIEW, SHOW MATERIALIZED VIEWS

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ß- und 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

  • 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.

  • Ein Schema darf keine Tabelle und keine gleichnamige Ansicht enthalten. Eine CREATE [ MATERIALIZED ] VIEW-Anweisung erzeugt einen Fehler, wenn im Schema bereits eine Tabelle mit dem gleichen Namen existiert.

  • Die Select-Anweisung darf keine HAVING-Klausel enthalten.

  • Die Select-Anweisung darf keine ORDER BY-Klausel enthalten.

  • Für materialisierte Ansichten gelten andere Einschränkungen. Weitere Details dazu finden Sie unter Einschränkungen beim Erstellen materialisierter Ansichten.

  • Wenn Sie eine CLUSTER BY-Klausel für die materialisierte Ansicht angeben, müssen Sie die Spaltenliste-Klausel einfügen.

  • 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.

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.