• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >PostgreSQL > PostgreSQL教程(二):模式Schema详解

PostgreSQL教程(二):模式Schema详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了postgresql schema,postgresql教程,postgresql安装教程,postgresql使用教程,postgresql视频教程等相关知识,希望本文的分享对您有所帮助

一个数据库包含一个或多个命名的模式,模式又包含表。模式还包含其它命名的对象,包括数据类型、函数,以及操作符。同一个对象名可以在不同的模式里使用而不会导致冲突; 比如,schema1和myschema都可以包含叫做mytable的表。和数据库不同,模式不是严格分离的:一个用户可以访问他所连接的数据库中的任意模式中的对象,只要他有权限。

    我们需要模式有以下几个主要原因:

    1). 允许多个用户使用一个数据库而不会干扰其它用户。
    2). 把数据库对象组织成逻辑组,让它们更便于管理。
    3). 第三方的应用可以放在不同的模式中,这样它们就不会和其它对象的名字冲突。
    
    1. 创建模式:
      CREATE SCHEMA myschema;
 </div>
    通过以上命令可以创建名字为myschema的模式,在该模式被创建后,其便可拥有自己的一组逻辑对象,如表、视图和函数等。
    
    2. public模式:

    在介绍后面的内容之前,这里我们需要先解释一下public模式。每当我们创建一个新的数据库时,PostgreSQL都会为我们自动创建该模式。当登录到该数据库时,如果没有特殊的指定,我们将以该模式(public)的形式操作各种数据对象,如:
      CREATE TABLE products ( ... ) 等同于 CREATE TABLE public.products ( ... )
    </div>
    3. 权限:
    缺省时,用户看不到模式中不属于他们所有的对象。为了让他们看得见,模式的所有者需要在模式上赋予USAGE权限。为了让用户使用模式中的对象,我们可能需要赋予额外的权限,只要是适合该对象的。PostgreSQL根据不同的对象提供了不同的权限类型,如:
      GRANT ALL ON SCHEMA myschema TO public;
 </div>
    上面的ALL关键字将包含CREATE和USAGE两种权限。如果public模式拥有了myschema模式的CREATE权限,那么登录到该模式的用户将可以在myschema模式中创建任意对象,如:
      CREATE TABLE myschema.products (
        product_no integer,
        name text,
        price numeric CHECK (price > 0),
    );
 </div>
    在为模式下的所有表赋予权限时,需要将权限拆分为各种不同的表操作,如:
      ALTER DEFAULT PRIVILEGES IN SCHEMA myschema
    GRANT INSERT, SELECT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER ON TABLES TO public;
 </div>
    在为模式下的所有Sequence序列对象赋予权限时,需要将权限拆分为各种不同的Sequence操作,如:
      ALTER DEFAULT PRIVILEGES IN SCHEMA myschema
    GRANT SELECT, UPDATE, USAGE ON SEQUENCES TO public;
 </div>
    在为模式下的所有函数赋予权限时,仅考虑执行权限,如:
      ALTER DEFAULT PRIVILEGES IN SCHEMA myschema
    GRANT EXECUTE ON FUNCTIONS TO public;
 </div>
    可以看出,通过以上方式在public模式下为myschema模式创建各种对象是极为不方便的。下面我们将要介绍另外一种方式,即通过role对象,直接登录并关联到myschema对象,之后便可以在myschema模式下直接创建各种所需的对象了。
        CREATE ROLE myschema LOGIN PASSWORD '123456'; --创建了和该模式关联的角色对象。
    CREATE SCHEMA myschema AUTHORIZATION myschema; --将该模式关联到指定的角色,模式名和角色名可以不相等。
 </div>
    在Linux Shell下,以myschema的角色登录到数据库MyTest,在密码输入正确后将成功登录到该数据库。
      /> psql -d MyTest -U myschema
    Password:
    MyTest=> CREATE TABLE test(i integer);
    CREATE TABLE
    MyTest=> \d   --查看该模式下,以及该模式有权限看到的tables信息列表。
              List of relations
     Schema     |   Name   | Type  |  Owner
    ------------+---------+------+----------
     myschema |   test     | table  | myschema
    (1 rows)
    </div>
    4. 删除模式:
      DROP SCHEMA myschema;
 </div>
    如果要删除模式及其所有对象,请使用级联删除:
      DROP SCHEMA myschema CASCADE;
 </div>
    
    5. 模式搜索路径:

    我们在使用一个数据库对象时可以使用它的全称来定位对象,然而这样做往往也是非常繁琐的,每次都不得不键入owner_name.object_name。PostgreSQL中提供了模式搜索路径,这有些类似于Linux中的$PATH环境变量,当我们执行一个Shell命令时,只有该命令位于$PATH的目录列表中,我们才可以通过命令名直接执行,否则就需要输入它的全路径名。PostgreSQL同样也通过查找一个搜索路径来判断一个表究竟是哪个表,这个路径是一个需要查找的模式列表。在搜索路径里找到的第一个表将被当作选定的表。如果在搜索路径中 没有匹配表,那么就报告一

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PostgreSQL教程(二):模式Schema详解

相关文章

  • 2017-05-11PostgreSql新手必学入门命令小结
  • 2017-05-11PostgreSQL安装、配置及简单使用方法
  • 2017-05-11PostgreSQL教程(十二):角色和权限管理介绍
  • 2017-05-11PostgreSQL教程(十六):系统视图详解
  • 2017-05-11PostgreSQL 查看数据库,索引,表,表空间大小的示例代码
  • 2017-05-11PostgreSQL教程(七):函数和操作符详解(3)
  • 2017-05-11PostgreSQL教程(九):事物隔离介绍
  • 2017-05-11PostgreSQL教程(六):函数和操作符详解(2)
  • 2017-05-11PostgreSQL教程(十七):客户端命令(1)
  • 2017-05-11PostgreSQL教程(一):数据表详解

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • PostgreSQL ERROR: invalid escape string 解决办法
    • PostgreSQL中的OID和XID 说明
    • Postgresql ALTER语句常用操作小结
    • CentOS 7下安装PostgreSQL 9.6的教程分享
    • PostgreSQL教程(三):表的继承和分区表详解
    • PostgreSQL教程(十一):服务器配置
    • PostgreSQL 创建表分区
    • PostgreSQL 角色与用户管理介绍
    • PostgreSQL管理工具phpPgAdmin入门指南
    • 解决PostgreSQL服务启动后占用100% CPU卡死的问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有