REATE SCHEMA

REATE SCHEMA

  • 定义一个新模式

语法

  • CREATE SCHEMA schemaname [ AUTHORIZATION username ] [ schema_element [ … ] ]
    CREATE SCHEMA AUTHORIZATION username [ schema_element [ … ] ]

  • 在当前数据库里输入一个新模式。

  • 该模式名将在当前数据库里现存的所有模式名中唯一。

  • 模式实际上是个名字空间:

    • 包含命名对象(表、数据类型、函数、操作符)这些名字可以和其它模式里存在的其它对象重名。
    • 命名对象要么是通过用模式名作为前缀"修饰"进行访问,要么是通过设置一个搜索路径包含所需要的模式。
    • 无修饰对象名的 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;

连接

  • https://www.yiibai.com/manual/postgresql/sql-createschema.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fgh431

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值