调用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;