暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

openGauss每日一练第12天|openGauss逻辑结构:模式管理

原创 听风 丶 2022-12-05
269

一、学习目标

openGauss的模式是对数据库做一个逻辑分割。
所有的数据库对象都建立在模式下面。
openGauss的模式和用户是弱绑定的,所谓的弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。

在一个数据库中,可以有多个模式。
模式可以把一组对象组织在一起。
这样组织机构有多少个应用,我们可以将数据库对象组织成几个模式;组织机构有几个部门,也可以为该部门创建单独的模式。默认情况下,用户将访问数据库的public模式。

二、课程学习

模式管理包括为数据库创建模式、删除模式、查看和设置模式的搜索路径、查看模式中的信息。

三、课程作业

测试环境准备:

  • 连接数据库:
    image.png
  • 清除已有的环境:
    image.png
  • 此时环境如下
    image.png
    image.png

可以开始进行操作了!

1.创建一个名为testsm、testsm1的模式

create schema testsm;
create schema testsm1;
image.png

\dn+查看模式信息
image.png
属于omm的模式

2.创建一个用户john, 并将testsm的owner修改为john,且修改owner前后分别使用\dn+查看模式信息

CREATE USER john IDENTIFIED BY ‘kunpeng@1234’;
ALTER USER john SYSADMIN;
image.png

修改前\dn+查看模式信息(多了一个创建用户默认创建的同名john的模式,Owner为john)
image.png
充分说明了openGauss中模式的弱绑定(创建用户的同时会自动创建一个同名模式)

修改权限
ALTER SCHEMA testsm OWNER TO john;
image.png

再次通过\dn+查看模式信息
image.png
此时testsm的owner已经成功修改为john

3.重命名testsm为testsm2

ALTER SCHEMA testsm RENAME TO testsm2;
image.png

通过\dn+查看重命名后的模式信息
image.png
此时testsm已经成功重命名为testsm2

4.在模式testsm1中建表t1、插入记录和查询记录

首先做个测试(创建一个测试表test,并\dt test,查看test表的Schema):
create table test(col1 char(10));
\dt test
image.png
发现:表是在默认模式public中创建的,即默认情况下,用户新创建的表,位于public模式中
alter schema testsm1 AUTHORIZATION Tim;

openGauss在创建一个新的数据库时,会自动创建一个public模式。
当用户登录到该数据库时,如果没有特殊的指定,都是操作在public模式中的数据库对象。

因此,我们需要使得用户登录到数据库,并指定模式:

SET SEARCH_PATH TO testsm1;
建表t1:create table t1(col1 char(10));
插入记录:insert into t1 values(‘hellow!’);
查询记录:select * from t1;
结果查询语句:\dt t1,查看t1表的Schema
image.png

创建用户Tim
CREATE USER Tim IDENTIFIED BY ‘kunpeng@1234’;
ALTER USER Tim SYSADMIN;
会话级修改(验证了创建用户会产生一个相应的模式)
SET SEARCH_PATH TO Tim;
image.png

5.在会话级设置模式搜索顺序

SET SEARCH_PATH TO 模式名;
SET SEARCH_PATH TO testsm1;
image.png
image.png

6.在数据库级设置模式搜索顺序

ALTER DATABASE 数据名 SET SEARCH_PATH TO 模式名;
1.先创建数据库(准备阶段做过了)
CREATE TABLESPACE enmtbs RELATIVE LOCATION ‘tablespace/enmtbs1’;
CREATE DATABASE enmdb WITH TABLESPACE = enmtbs;
2.数据库级设置搜索顺序
alter schema testsm1 owner to Tim;
ALTER DATABASE enmdb SET SEARCH_PATH TO testsm1;(重点)
\q
gsql -r
\c enmdb Tim
3.查看模式搜索顺序
show SEARCH_PATH;
image.png

7.在用户级设置模式搜索顺序

ALTER USER 用户名 SET SEARCH_PATH TO 模式名;
ALTER USER tim SET SEARCH_PATH TO testsm2;
gsql -d enmdb -U tim -W kunpeng@1234 -r
show SEARCH_PATH;
image.png

5,6,7说明:会话级模式搜索顺序的优先级最高,用户级模式搜索顺序的优先级第2,数据库级模式搜索顺序的优先级最低。
注意会话级:在gsql客户端会话中,执行命令SET SEARCH_PATH TO schm1可以修改模式搜索路径,但只在gsql客户端会话的持续过程中起作用,一旦退出gsql客户端会话,这个设置就丢失了。重新登录gsql会话将模式搜索路径恢复为默认值"$user",public。

四、个人小结

  • 本次学习内容是对模式管理的全新认识,openGauss的模式和用户是弱绑定的,所谓的弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式,基于这个原理,在一个数据库中,可以有多个模式,而对于实际数据库设计,也能有更加好的应用拓展性。本次作业内容多,理解起来有些困难,需要多看看本章,这是需要我们掌握的内容,要坚持完成今天打卡,其实自己理解你会对openGauss的设计有更深的认识,会更加重视起模式,希望大家都继续坚持打卡,互勉加油!
最后修改时间:2022-12-05 23:41:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
2年前
评论
暂无图片 0
作业审核合格,一起参与21天openGauss学习打卡活动! 活动详情:https://www.modb.pro/db/551619
2年前
暂无图片 点赞
评论