当前位置: 首页 > news >正文

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

文章目录

    • openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA
    • 34.1 语法格式
    • 34.2 参数说明
    • 34.3 示例

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
    

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

http://www.lryc.cn/news/119715.html

相关文章:

  • 虚拟世界探索:科技之下的未来可能性
  • OSPF技术入门(第三十四课)
  • 春秋云镜 CVE-2022-0948
  • 【资讯速递】AI与人类思维的融合;OpenAI在中国申请注册“GPT-5”商标;移动大模型主要面向to B 智能算力是未来方向
  • TDesign中后台管理系统-用户登录
  • RN 使用react-navigation写可以滚动的横向导航条(expo项目)
  • 单例模式写法的总结(保证线程安全)
  • SQL Server 查询数据并汇总相关技巧 23.08.08
  • 第一章 SpringBoot 介绍-最小配置
  • 10-1_Qt 5.9 C++开发指南_Data Visualization实现数据三维显示
  • [保研/考研机试] KY87 鸡兔同笼 北京大学复试上机题 C++实现
  • Jmeter快捷方式和应用图标设置
  • PHP sm4国密加密解密文件
  • CBCGPRibbon 添加Edit、Combox、Hyperlink控件
  • 漫话拥塞控制:BBR 是个单流模型
  • HTML详解连载(1)
  • 最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架
  • centos7安装Docker详细步骤(无坑版教程)
  • Python入门自学进阶-Web框架——39、redis、rabbitmq、git——2
  • 了解IL汇编跳转语句
  • JVM运行时五大数据区域详解
  • Vuex 使用教程
  • springboot启动you will need to add ‘org.slf4j‘ to prefer-application-packages异常解决
  • 云原生核心原则和特征
  • 【ElasticSearch入门】
  • SQL | 注释
  • oi知识表+NOIP提高组算法及算法思想总结
  • 【mysql】实现递归查询
  • JUC并发编程之原子类
  • 测试设计中隐藏的边界有哪些?