跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

CREATE SCHEMA

CREATE SCHEMA语句用于在当前 Catalog 中创建 Schema。

Schema 是一种系统对象,用作图类型、图和过程等普通对象的容器。

当服务组初始化后,系统会自动创建/default_schema,其作为存储图的资源对象的默认 Schema。当会话启动时,该 Schema 会被自动设置为当前用户的主 Schema 并成为当前会话的 Schema。

创建 Schema 的用户会成为该 Schema 的 Owner,并隐式拥有USAGE。其他用户必须先获得USAGE,才能发现、切换到或访问该 Schema。更多信息,请参见 Schema 访问控制。

  • 若要为当前用户更改主 Schema,可使用 ALTER USER。
  • 若要为当前会话更改 Schema,可使用 SESSION SET。

前提条件

具备在当前 Catalog 执行CREATE SCHEMA操作的权限。更多信息,请参见角色与权限。

语法

create_schema_statement
CREATE SCHEMA IF NOT EXISTS schema_reference

create_schema_statement ::=
    'CREATE' 'SCHEMA' ('IF NOT EXISTS')? schema_reference

参数

IF NOT EXISTS

该子句会检查是否已经存在相同路径下的 Schema。如果已经存在,则不会创建 Schema,也不会抛出异常。

若不指定该子句,且相同路径下已存在 Schema,则会抛出异常。

schema_reference

所引用的 Schema 路径。此处即待创建的 Schema 的路径。

绝对路径或相对路径均可在语句中使用。

  • 绝对路径必须以/开头。例如,/test1和/test2/test3。
  • 相对路径必须以../开头。例如,../test1和../test2/test3。

当使用相对路径时,其对应的绝对路径是基于当前会话中设置的 Schema 来确定的。例如:

  • 若当前会话的 Schema 设置为/default_schema,其路径深度为 1:
    • 相对路径../test1将解析为绝对路径/test1。
    • 相对路径../test2/test3将解析为绝对路径/test2/test3。
  • 若当前会话的 Schema 设置为/my_test/test0,其路径深度为 2:
    • 相对路径../test1将解析为绝对路径/my_test/test1。
    • 相对路径../test2/test3将解析为绝对路径/my_test/test2/test3。
    • 相对路径../../test4将解析为绝对路径/test4。

在类 Unix 系统中,根目录(/)是最高级别的目录,无法再通过../向上遍历。因此,在解析相对路径时,任何会将路径移到根路径/之上的../都会被忽略。例如,若当前会话的 Schema 设置为/default_schema,其路径深度为 1,则相对路径../../test1和../../../test1等同于../test1,均解析为绝对路径/test1。

注意以下限制:

  • 待创建的 Schema 路径不得与已有 Schema 的路径冲突。例如,若路径/my_test下已存在 Schema,则不能在其子路径,比如/my_test/test1或/my_test/test1/test2,创建其他 Schema。
  • 路径/tmp_schema被系统保留,无法用于创建 Schema。

示例

使用绝对路径创建 Schema

CREATE SCHEMA IF NOT EXISTS /test/my_schema1

上述示例在路径/test/my_schema1中创建一个 Schema。

使用相对路径创建 Schema

'''
// 创建 Schema
CREATE SCHEMA IF NOT EXISTS /test/my_schema1
'''

'''
// 为当前会话设置 Schema
SESSION SET SCHEMA /test/my_schema1
'''

'''
// 使用相对路径创建 Schema
CREATE SCHEMA IF NOT EXISTS ../my_schema2
'''

上述示例在当前会话中的 Schema 为/test/my_schema1的情况下,在路径/test/my_schema2中创建一个 Schema。

更多信息