CREATE SCHEMA

Erstellt ein neues Schema in der aktuellen Datenbank.

Darüber hinaus kann dieser Befehl zum Klonen eines vorhandenen Schemas verwendet werden, entweder in seinem aktuellen Zustand oder zu einem bestimmten Zeitpunkt/Punkt in der Vergangenheit (mit Time Travel). Weitere Informationen zum Klonen eines Schemas finden Sie unter Hinweise zum Klonen.

Siehe auch:

ALTER SCHEMA, DESCRIBE SCHEMA, DROP SCHEMA, SHOW SCHEMAS, UNDROP SCHEMA

Syntax

CREATE [ OR REPLACE ] [ TRANSIENT ] SCHEMA [ IF NOT EXISTS ] <name>
  [ CLONE <source_schema>
        [ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ] ]
  [ WITH MANAGED ACCESS ]
  [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
  [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
  [ EXTERNAL_VOLUME = <external_volume_name> ]
  [ CATALOG = <catalog_integration_name> ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

Erforderliche Parameter

name

Gibt den Bezeichner für das Schema an. Dieser muss für die Datenbank, in der das Schema 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.

Optionale Parameter

TRANSIENT

Gibt ein Schema als transient an. Transiente Schemata haben keine Fail-safe-Frist, sodass ihnen nach Verlassen von Time Travel keine zusätzlichen Speicherkosten entstehen. Das bedeutet aber auch, dass sie bei einem Datenverlust nicht durch Fail-safe geschützt sind. Weitere Informationen dazu finden Sie unter Erläuterungen zu und Anzeigen von Fail-safe.

Darüber hinaus sind per Definition alle in einem transienten Schema erstellten Tabellen transient. Weitere Informationen zu transienten Tabellen finden Sie unter CREATE TABLE.

Standard: Kein Wert (d. h. das Schema ist permanent)

CLONE source_schema

Gibt an, dass ein Klon des angegebenen Quellschemas erstellt wird. Weitere Informationen zum Klonen eines Schemas finden Sie unter CREATE <Objekt> … CLONE.

AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )

Beim Klonen eines Schemas gibt die AT | BEFORE-Klausel an, dass Time Travel verwendet wird, um das Schema an oder vor einem bestimmten Punkt der Vergangenheit zu klonen.

WITH MANAGED ACCESS

Gibt ein verwaltetes Schema an. Verwaltete Zugriffsschemas zentralisieren die Verwaltung von Berechtigungen für den Schemabesitzer.

In regulären Schemas kann der Besitzer eines Objekts (d. h. die Rolle, die über die Berechtigung OWNERSHIP für das Objekt verfügt) anderen Rollen Berechtigungen für seine Objekte erteilen. In verwalteten Schemas verwaltet der Schemabesitzer alle Berechtigungszuweisungen, einschließlich zukünftiger Zuweisungen, für Objekte im Schema. Objekteigentümer behalten die OWNERSHIP-Berechtigung für die Objekte. Berechtigungszuweisungen für die Objekte können jedoch nur vom Schemaeigentümer verwaltet werden.

DATA_RETENTION_TIME_IN_DAYS = integer

Gibt die Anzahl der Tage an, für die Time Travel-Aktionen (CLONE und UNDROP) auf dem Schema ausgeführt werden können, sowie die standardmäßige Time Travel-Aufbewahrungsdauer für alle im Schema erstellten Tabellen. Weitere Details dazu finden Sie unter Verstehen und Verwenden von Time Travel.

Eine ausführliche Beschreibung dieses Parameters auf Objektebene sowie weitere Informationen zu Objektparametern finden Sie unter Parameter. Weitere Informationen zur Aufbewahrungsdauer auf Tabellenebene finden Sie unter CREATE TABLE und Verstehen und Verwenden von Time Travel.

Werte:

  • Standardausführung: 0 oder 1

  • Enterprise Edition:

    • 0 bis 90 für permanente Schemata

    • 0 oder 1 für transiente Schemata

Standard:

  • Standardausführung: 1

  • Enterprise Edition (oder höher): 1 (es sei denn, auf Datenbank- oder Kontoebene wurde ein anderer Standardwert angegeben)

Bemerkung

Der Wert 0 deaktiviert effektiv Time Travel für das Schema.

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Objektparameter, der die maximale Anzahl von Tagen angibt, für die Snowflake die Datenaufbewahrungsfrist für Tabellen im Schema verlängern kann, um zu verhindern, dass Streams auf den Tabellen veraltet sind.

Eine detaillierte Beschreibung dieses Parameters finden Sie unter MAX_DATA_EXTENSION_TIME_IN_DAYS.

EXTERNAL_VOLUME = external_volume_name

Objektparameter, der das externe Standardvolume angibt, das für Iceberg-Tabellen verwendet werden soll.

Weitere Informationen zu diesem Parameter finden Sie unter EXTERNAL_VOLUME.

CATALOG = catalog_integration_name

Objektparameter, der die Standard-Katalogintegration angibt, die für Iceberg-Tabellen verwendet werden soll.

Weitere Informationen zu diesem Parameter finden Sie unter CATALOG.

DEFAULT_DDL_COLLATION = 'collation_specification'

Gibt eine Standardsortierungsspezifikation für alle dem Schema hinzugefügten Tabellen an. Der Standardwert kann auf der Ebene der einzelnen Tabellen überschrieben werden.

Weitere Informationen zu diesem Parameter finden Sie unter DEFAULT_DDL_COLLATION.

COMMENT = 'string_literal'

Gibt einen Kommentar zum Schema an.

Standard: Kein Wert

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE SCHEMA

Datenbank

Kann sowohl reguläre als auch verwaltete Zugriffsschemas erstellen.

CREATE SCHEMA … CLONE … WITH MANAGED ACCESS

Optionen

Die erforderlichen Berechtigungen hängen davon ab, ob das Quellschema verwaltet oder nicht verwaltet ist:

  • Verwaltet: OWNERSHIP für das Quellschema.

  • Nicht verwaltet: MANAGE GRANTS ON ACCOUNT und USAGE für das Quellschema.

USAGE

Externes Volume, Katalogintegration

Erforderlich beim Festlegen der Objektparameter EXTERNAL_VOLUME bzw. CATALOG.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einem bestimmten Satz von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Durch das Erstellen eines Schemas wird es automatisch als aktives/aktuelles Schema für die aktuelle Sitzung festgelegt (entspricht der Verwendung des Befehls USE SCHEMA für das Schema).

  • Wenn bereits ein Schema mit dem gleichen Namen in der Datenbank existiert, wird ein Fehler zurückgegeben, und das Schema wird nicht erstellt, es sei denn, das optionale Schlüsselwort OR REPLACE ist im Befehl angegeben.

    Wichtig

    Die Verwendung von OR REPLACE ist das Äquivalent zur Verwendung von DROP SCHEMA auf dem vorhandenen Schema und zur Erstellung eines neuen Schemas mit dem gleichen Namen; das gelöschte Schema wird jedoch nicht permanent aus dem System entfernt. Stattdessen wird es in Time Travel beibehalten. Dies ist wichtig, da in Time Travel entfernte Schemas den Datenspeicher für Ihr Konto beeinflussen. Weitere Informationen dazu finden Sie unter Speicherkosten für Time Travel und Fail-safe.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

  • In einem Schema mit verwaltetem Zugriff verwaltet der Schemaeigentümer Berechtigungen für die enthaltenen Objekte (z. B. Tabellen oder Ansichten), verfügt jedoch über keine anderen Berechtigungen (USAGE, SELECT, DROP usw.) für die Objekte.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Legen Sie ein dauerhaftes Schema an:

CREATE SCHEMA myschema;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |         | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |         | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |         | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
Copy

Erstellen Sie ein transientes Schema:

CREATE TRANSIENT SCHEMA tschema;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options   | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |           | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |           | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |           | 1              |
| 2018-12-10 09:35:32.326 -0800 | TSCHEMA            | N          | Y          | MYDB          | PUBLIC       |                                                           | TRANSIENT | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
Copy

Erstellen Sie ein verwaltetes Zugriffsschema:

CREATE SCHEMA mschema WITH MANAGED ACCESS;

SHOW SCHEMAS;

+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner        | comment                                                   | options        | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------|
| 2018-12-10 09:34:02.127 -0800 | INFORMATION_SCHEMA | N          | N          | MYDB          |              | Views describing the contents of schemas in this database |                | 1              |
| 2018-12-10 09:36:47.738 -0800 | MSCHEMA            | N          | Y          | MYDB          | ROLE1        |                                                           | MANAGED ACCESS | 1              |
| 2018-12-10 09:33:56.793 -0800 | MYSCHEMA           | N          | Y          | MYDB          | PUBLIC       |                                                           |                | 1              |
| 2018-11-26 06:08:24.263 -0800 | PUBLIC             | N          | N          | MYDB          | PUBLIC       |                                                           |                | 1              |
| 2018-12-10 09:35:32.326 -0800 | TSCHEMA            | N          | Y          | MYDB          | PUBLIC       |                                                           | TRANSIENT      | 1              |
+-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+
Copy