CREATE SCHEMA

在当前数据库中创建新架构。

此外,此命令可用于 克隆现有架构,无论是在其当前状态还是在过去的特定时间/点(使用 Time Travel)。有关克隆架构的更多信息,请参阅 克隆注意事项

另请参阅:

ALTER SCHEMADESCRIBE SCHEMADROP SCHEMASHOW SCHEMASUNDROP SCHEMA

语法

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

必填参数

name

指定架构的标识符;对于创建架构的数据库来说必须是唯一的。

此外,标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如,"My object")。放在双引号内的标识符也区分大小写。

有关更多详细信息,请参阅 标识符要求

可选参数

TRANSIENT

将架构指定为瞬态架构。瞬态架构没有故障安全期,因此一旦它们离开 Time Travel,它们就不会产生额外的存储成本;但是,这意味着它们在数据丢失时也不会受故障安全的保护。有关更多信息,请参阅 了解和查看故障安全

此外,根据定义,在瞬态架构中创建的所有表都是瞬态表。有关瞬态表的更多信息,请参阅 CREATE TABLE

默认:无值(即架构是永久架构)

CLONE source_schema

指定创建指定的源架构的克隆。有关克隆架构的更多详细信息,请参阅 CREATE <object> ... CLONE

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

克隆一个架构时,AT | BEFORE 子句指定使用 Time Travel 在过去特定时间点或之前克隆该架构。

WITH MANAGED ACCESS

指定托管架构。托管访问架构将权限管理集中到架构所有者。

在常规架构中,对象的所有者(即,具有对象的 OWNERSHIP 权限的角色)可以向其他角色授予对象的进一步权限。在托管架构中,架构所有者管理架构中对对象的所有权限授权,包括 未来授权。对象所有者仍然具有对象的 OWNERSHIP 权限;但是,只有架构所有者可以管理对象的权限授予。

DATA_RETENTION_TIME_IN_DAYS = integer

指定可以对架构执行 Time Travel 操作(CLONE 和 UNDROP)的天数,并指定在架构中创建的所有表的默认 Time Travel 保留时间。有关更多详细信息,请参阅 了解和使用 Time Travel

有关此对象级参数的详细说明以及有关对象参数的详细信息,请参阅 参数。有关表级保留时间的更多信息,请参阅 CREATE TABLE了解和使用 Time Travel

值:

  • Standard Edition:01

  • Enterprise Edition:

    • 090 用于永久架构

    • 01 用于瞬态架构

默认:

  • Standard Edition:1

  • Enterprise Edition(或更高版本):1 (除非在数据库或账户级别指定了不同的默认值)

备注

值为 0 时会有效禁用架构的 Time Travel。

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

对象参数,指定 Snowflake 可以延长架构内表的数据保留期以防止表上的流过时的最大天数。

有关此参数的详细说明,请参阅 MAX_DATA_EXTENSION_TIME_IN_DAYS

EXTERNAL_VOLUME = external_volume_name

对象参数,指定要用于 Iceberg 表 的默认外部卷。

有关此参数的详细信息,请参阅 EXTERNAL_VOLUME

CATALOG = catalog_integration_name

对象参数,指定要用于 Iceberg 表 的默认目录集成。

有关此参数的详细信息,请参阅 CATALOG

DEFAULT_DDL_COLLATION = 'collation_specification'

为添加到架构的所有表指定默认 排序规则规范。可以在单个表级别上覆盖默认值。

有关该参数的更多详细信息,请参阅 DEFAULT_DDL_COLLATION

COMMENT = 'string_literal'

指定架构的注释。

默认:无值

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

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象和列的标签配额

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

CREATE SCHEMA

数据库

可以创建常规访问架构和 :ref:` 托管访问 <label-managed_access_schemas>` 架构。

CREATE SCHEMA ...CLONE ...WITH MANAGED ACCESS

选项

所需的权限取决于源架构是托管架构还是非托管架构:

  • 托管:源架构的 OWNERSHIP。

  • 非托管:源架构的 MANAGE GRANTS ON ACCOUNT :emph:` 和 ` USAGE。

USAGE

外部卷、目录集成

分别设置 EXTERNAL_VOLUMECATALOG 对象参数时必需。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

使用说明

  • 创建架构会自动将其设置为当前会话的活动/当前架构(相当于使用架构的 USE SCHEMA 命令)。

  • 如果数据库中已存在同名的架构,则返回错误,并且不会创建架构,除非命令中指定了可选的 OR REPLACE 关键字。

    重要

    使用 OR REPLACE 相当于对现有架构使用 DROP SCHEMA,然后创建一个同名的新架构;但是,删除的架构 不会 从系统中永久移除。相反,它保留在 Time Travel 中。这很重要,因为 Time Travel 中删除的架构有助于账户的数据存储。有关更多信息,请参阅 Time Travel 和故障安全的存储成本

  • CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。

  • 在托管访问架构中,架构所有者管理对所包含对象(例如表或视图)的授权,但对这些对象没有其他权限(USAGE、SELECT、DROP 等)。

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

创建永久架构:

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

创建瞬态架构:

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

创建托管访问架构:

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
语言: 中文