返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

CREATE SCHEMA

发布于 2019-09-30 03:10:56 字数 2438 浏览 921 评论 0 收藏 0

名称

CREATE SCHEMA--定义一个新模式

语法

CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ ... ] ]
CREATE SCHEMA AUTHORIZATION username [ schema_element [ ... ] ]

描述

CREATE SCHEMA 在当前数据库里输入一个新模式。该模式名将在当前数据库里现存的所有模式名中唯一。

模式实际上是一个名字空间:它包含命名对象(表、数据类型、函数、操作符)这些名字可以和其它模式里存在的其它对象重名。命名对象要么是通过用模式名作为前缀"修饰"进行访问,要么是通过设置一个搜索路径包含所需要的模式。一条带着无修饰对象名的 CREATE 命令都是在当前模式中创建的(在搜索路径最前面的模式;可以用 current_schema 函数来判断)。

另外,CREATE SCHEMA 可以包括在新模式中创建对象的子命令。这些子命令和那些在创建完模式后发出的命令没有任何区别,只不过是如果使用了 AUTHORIZATION 子句,那么所有创建的对象都将被该用户拥有。

参数

schemaname

要创建的模式名字。如果省略,则使用用户名作为模式名。这个名字不能以 pg_ 开头,因为这样的名字保留给系统模式使用。

username

将拥有该模式的用户名。如果省略,缺省为执行该命令的用户名。只有超级用户才能创建不属于自己的模式。

schema_element

一个 SQL 语句,定义一个要在模式里创建的对象。目前,只有 CREATE TABLE, CREATE VIEW, CREATE INDEX, CREATE SEQUENCE, CREATE TRIGGER, GRANT 是可以接受的子句。其它类型的对象可以在创建完模式之后的独立命令里创建。

注意

要创建模式,调用该命令的用户必需在当前数据库上有 CREATE 权限。当然,超级用户可以绕开这个检查。

例子

创建一个模式:

CREATE SCHEMA myschema;

为用户 joe 创建模式,模式名也叫 joe

CREATE SCHEMA AUTHORIZATION joe;

创建一个模式并且在里面创建一个表:

CREATE SCHEMA hollywood
    CREATE TABLE films (title text, release date, awards text[])
    CREATE VIEW winners AS
        SELECT title, release FROM films WHERE awards IS NOT NULL;

请注意上面独立的子命令不是由分号结尾的。

下面的命令是实现同样结果的等效语句:

CREATE SCHEMA hollywood;
CREATE TABLE hollywood.films (title text, release date, awards text[]);
CREATE VIEW hollywood.winners AS
    SELECT title, release FROM hollywood.films WHERE awards IS NOT NULL;

兼容性

SQL 标准允许在 CREATE SCHEMA 里面有一个 DEFAULT CHARACTER SET 子句以及比目前 PostgreSQL 可以接受的更多的子命令。

SQL 标准声明在 CREATE SCHEMA 里的子命令可以以任意顺序出现。目前 PostgreSQL 里的实现还不能处理所有子命令里需要提前引用的情况;有时候可能需要重排一下子命令的顺序以避免前向引用。

在 SQL 标准里,模式的所有者总是拥有其中的所有对象。PostgreSQL 允许模式包含非模式所有者所有的对象。只有在模式所有者 CREATE 了自己的模式的权限给了其他人才可能出现。

又见

ALTER SCHEMA, DROP SCHEMA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文