首页 > 其他分享 >openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA

openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA

时间:2023-08-08 19:01:22浏览次数:40  
标签:name CREATE 模式 34 openGauss schema SCHEMA

openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA

SCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的SCHEMA下而不引起冲突。

每个数据库包含一个或多个SCHEMA。数据库中的每个SCHEMA包含表和其他类型的对象。数据库创建初始,默认具有一个名为PUBLIC的SCHEMA,且所有用户都拥有此SCHEMA的USAGE权限,只有系统管理员和初始化用户可以在public Schema下创建普通函数、聚合函数、存储过程和同义词对象,只有初始化用户可以在public Schema下创建操作符,其他用户即使赋予create权限后也不可以创建上述五种对象。可以通过SCHEMA分组数据库对象。SCHEMA类似于操作系统目录,但SCHEMA不能嵌套。

相同的数据库对象名称可以应用在同一数据库的不同SCHEMA中,而没有冲突。例如,a_schema和b_schema都可以包含名为mytable的表。具有所需权限的用户可以访问数据库的多个SCHEMA中的对象。

通过CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA。

34.1 语法格式

  • 创建SCHEMA

    CREATE SCHEMA schema_name 
        [ AUTHORIZATION user_name ] ;
    
  • 修改SCHEMA

    • 修改模式的名称。

      ALTER SCHEMA schema_name 
          RENAME TO new_name;
      
    • 修改模式的所有者。

      ALTER SCHEMA schema_name 
          OWNER TO new_owner;
      
  • 删除SCHEMA及其对象。

    DROP SCHEMA schema_name;
    

    不要随意删除pg_temp或pg_toast_temp开头的模式,这些模式是系统内部使用的,如果删除,可能导致无法预知的结果。

34.2 参数说明

  • schema_name

    模式名称。

    img 须知: 模式名不能和当前数据库里其他的模式重名。 模式的名称不可以“pg_”开头。

    取值范围:字符串,要符合标识符的命名规范。

  • AUTHORIZATION user_name

    指定模式的所有者。当不指定schema_name时,把user_name当作模式名,此时user_name只能是角色名。

    取值范围:已存在的用户名/角色名。

  • schema_element

    在模式里创建对象的SQL语句。目前仅支持CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PARTITION、CREATE SEQUENCE、CREATE TRIGGER、GRANT子句。

    子命令所创建的对象都被AUTHORIZATION子句指定的用户所拥有。

img 说明: 如果当前搜索路径上的模式中存在同名对象时,需要明确指定引用对象所在的模式。可以通过命令SHOW SEARCH_PATH来查看当前搜索路径上的模式。

34.3 示例

  • 创建一个属于用户user1的模式。

    创建一个用户user1。

    openGauss=# CREATE USER user1 IDENTIFIED BY 'XXXXXXXX';
    CREATE ROLE
    

    根据用户名创建模式。

    openGauss=# CREATE SCHEMA test AUTHORIZATION user1;
    CREATE SCHEMA
    
  • 修改模式test的名称为test1。

    openGauss=# ALTER SCHEMA test RENAME TO test1;
    ALTER SCHEMA
    
  • 修改模式的所有者。

    创建一个用户user2。

    openGauss=# CREATE USER user2 IDENTIFIED BY 'XXXXXXXXX';
    CREATE ROLE
    

    修改模式 test1的所有者为user2。

    openGauss=# ALTER SCHEMA test1  OWNER TO user2;
    ALTER SCHEMA
    
  • 查看当前搜索路径

    openGauss=# SHOW SEARCH_PATH;
      search_path
    ----------------
     "$user",public
    (1 row)
    
  • 更改当前会话的默认Schema。

    openGauss=# SET SEARCH_PATH TO test1, public;
    SET
    
  • 删除SCHEMA及其对象。

    openGauss=# DROP SCHEMA test1;
    DROP SCHEMA
    

标签:name,CREATE,模式,34,openGauss,schema,SCHEMA
From: https://blog.51cto.com/shuchaoyang/7011499

相关文章

  • 代码随想录算法训练营第十三天| 239. 滑动窗口最大值 347.前 K 个高频元素 总结
    239.滑动窗口最大值 (一刷至少需要理解思路)    卡哥建议:之前讲的都是栈的应用,这次该是队列的应用了。本题算比较有难度的,需要自己去构造单调队列,建议先看视频来理解。    题目链接/文章讲解/视频讲解:https://programmercarl.com/0239.%E6%BB%91%E5%8A%A8%E7%AA%......
  • Rt10K3435 代码
    #include"Rt10K3435.h"constunsignedintRtTable[50][2]={\{0,2749},{1,2632},{2,2521},{3,2415},{4,2314},{5,2218},{6,2126},{7,2039},{8,1956},{9,1877},\{10,1801},{11,1729},{12,1660},{13,1595},{14,1532},{15,1472},{16,1415},{17,1360},{18,130......
  • openGauss学习笔记-33 openGauss 高级数据管理-视图
    openGauss学习笔记-33openGauss高级数据管理-视图视图与基本表不同,是一个虚拟的表。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到......
  • esp32cam(6贴片位)烧录MicroPython的方法(ch340)
    起因:购买的esp32cam烧录底座(ch340)无法刷入MicroPython,将ch340的驱动重装后,即使刷入也不能正常连接thonny。看了好几个csdn的帖子也无济于事,后看到B站up邪恶的胖次菌的视频esp32cam烧录笔记openmv/micropython找到解决办法。按照视频中6贴片位的esp32cam连好杜邦线后,即可在thonn......
  • 【我和openGauss的故事】 openGauss 5.0.0 事务相关语法
    【我和openGauss的故事】openGauss5.0.0事务相关语法秋秋openGauss2023-08-0316:49发表于四川众所周知,openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行,是PostgreSQL9.2.4版本的硬分叉,经历HUAWEI多年的孵化,并已历经了两个LTS版本。现在的openGau......
  • 【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试
    【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试DarkAthenaopenGauss2023-08-0418:01发表于四川背景先说下数据库里说的函数重载是什么。比如我们知道数据库可能会有同名的函数,但是函数的参数声明不一样selectto_char(sysdate,'yyyymmdd')fromdual;se......
  • 【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGauss
    【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGaussDemonCharm[openGauss](javascript:void(0);)2023-08-0418:01发表于四川前言本博客介绍了使用Ora2Pg迁移oracle数据到openGauss1、下载及安装Ora2Pg1.1、下载说明:PerlDBD:http://search.CPAN.org#只需在搜索......
  • 【我和openGauss的故事】为集群实现VIP
    【我和openGauss的故事】为集群增加VIPlqkittenopenGauss2023-08-0418:01发表于四川openGauss发布以来,原生支持一主多备,RTO<10S,高可用性能大大增强。自openGauss3.0开始,更新了集群管理套件CM,易用性也得到了提高。但对于客户端来说,数据库端的切换,需要手工完成。openGauss增加VI......
  • MTK 2.9.2 迁移Oracle 11g 至 openGauss 5.0.0操作指南
    MTK2.9.2迁移Oracle11g至openGauss5.0.0操作指南尚雷openGauss2023-08-0418:01发表于四川前言:最近在进行一些去O的验证测试,之前测试过MTK迁移Oracle到MogDB,正好测试下Oracle到openGauss的迁移,于是做了如下测试,并整理记录成文,还望对此熟悉的朋友多多指正。一、简介MTK全......
  • 代码随想录算法训练营第七天|力扣334.反转字符串、力扣541.反转字符串II、剑指offer05
    字符串反转字符串(力扣344.)如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。毕竟面试官一定不是考察你对库函数的熟悉程度,如果使用python和java的同学更需要注意这一点,因为python、java提供的库函数十分丰富。如果库函数仅仅是解题过程中的一小部分,并且......