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>' , ... ] ) ]
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
oder1
Enterprise Edition:
0
bis90
für permanente Schemata0
oder1
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:
|
USAGE |
Externes Volume, Katalogintegration |
Erforderlich beim Festlegen der Objektparameter |
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 | +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+---------+----------------+
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 | +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+-----------+----------------+
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 | +-------------------------------+--------------------+------------+------------+---------------+--------------+-----------------------------------------------------------+----------------+----------------+