调用CREATE SCHEMA定义一个新的Schema。

语法

CREATE SCHEMA AUTHORIZATION username schema_element [ ... ]

说明

CREATE SCHEMA 命令的该变体可创建由 username 拥有的新 schema,并由一个或多个对象填充。schema 和对象的创建发生在单个事务中,因此要么创建的所有对象均包含 schema,要么都不包含。(请注意,如果使用的是 Oracle 数据库,那么不会创建新 schema – username,因此 schema 必须预先存在。)

schema 本质上是一个命名空间:其中包含命名对象(表、视图等),其名称可能与其他 schema 中存在的其他对象重复。命名对象的访问方式如下:将 schema 名称作为前缀以“限定”其名称,或设置包含所需 schema 的搜索路径。未限定的对象在当前 schema(即搜索路径前面的 schema,可采用函数 CURRENT_SCHEMA 确定)中创建。(搜索路径概念及 CURRENT_SCHEMA 函数与 Oracle 数据库不兼容。)

CREATE SCHEMA 包含在 schema 内创建对象的子命令。子命令的处理方式与创建 schema 后发出的单独命令基本相同。创建的所有对象均由指定的用户拥有。

说明 要创建 schema,调用用户必须对当前数据库具有 CREATE 特权。

参数

参数说明
username将拥有新 schema 的用户的名称。schema 的名称将与 username 相同。只有超级用户可以创建除自己以外的用户所拥有的 schema。(请注意,在PolarDB PostgreSQL版(兼容Oracle)中,角色、username 必须已经存在,但 schema 不得存在。在Oracle 中,用户(相当于 schema)必须存在。)
schema_element一条 SQL 语句,用于定义要在 schema 内创建的对象。在 CREATE SCHEMA 中,接受 CREATE TABLE、CREATE VIEW 和 GRANT 作为子句。在创建 schema 之后,可以在单独的命令中创建其他对象类型。

示例

CREATE SCHEMA AUTHORIZATION polardb
    CREATE TABLE empjobs (ename VARCHAR2(10), job VARCHAR2(9))
    CREATE VIEW managers AS SELECT ename FROM empjobs WHERE job = 'MANAGER'
    GRANT SELECT ON managers TO PUBLIC;