一、作业
1.创建一个名为testsm、testsm1的模式:
(1)首先打开虚拟机上的opengauss数据库服务并进入数据库:
su - omm
gs_om -t start
gsql -d postgres -p 26000 -r
(2)创建user1并授予user1权限
因为我之前已经创建好了user1,并已经赋予了权限,所以直接使用 \du 元命令查询当前用户:

(3)创建名为testsm、testsm1的模式
再此之前,先创建表空间enmtbs和数据库enmdb,在这个数据库上操作
--执行如下的命令和SQL语句,创建表空间enmtbs和数据库enmdb:
CREATE TABLESPACE enmtbs RELATIVE LOCATION 'tablespace/enmtbs1';
CREATE DATABASE enmdb WITH TABLESPACE = enmtbs;
然后用 \c enmdb 进入到这个数据库

然后开始创建模式
create schema testsm;
create schema testsm1;
使用 \dn 查看

2.创建一个用户john, 并将testsm的owner修改为john,且修改owner前后分别使用\dn+查看模式信息:
(1)创建用户john并赋予权限
CREATE USER john IDENTIFIED BY 'kunpeng@1234';
ALTER USER john SYSADMIN;
(2)将testsm的owner修改为john
修改前先使用 \dn+ 查看

--修改模式的所有者
ALTER SCHEMA testsm OWNER TO john;
可以看到模式的所有者已经被修改了。
3.重命名testsm为testsm1:
--修改模式的名称
ALTER SCHEMA testsm RENAME TO testsm1;
因为已经存在一个testsm1的模式,所以这里会报错,所以我重新改为testsm2
ALTER SCHEMA testsm RENAME TO testsm2;
然后用 \dn 查看

已经可以看到模式名字已经成功修改了
4.在模式testsm1中建表t1、插入记录和查询记录:
(1)在模式testsm1建表t1
create table testsm1.t1(id int, name char(20));
(2)插入记录
insert into testsm1.t1 values(1,'wkz');
(3)查询记录
select * from testsm1.t1;
5.在会话级设置模式搜索顺序:
要注意的是:会话级模式搜索顺序的优先级最高,用户级模式搜索顺序的优先级第2,数据库级模式搜索顺序的优先级最低。
SET SEARCH_PATH TO schm1;
show SEARCH_PATH;
\q
gsql -d postgres -p 26000 -r
show SEARCH_PATH;


6.在数据库级设置模式搜索顺序:
ALTER DATABASE enmdb SET SEARCH_PATH TO schm1;
\q
gsql -d postgres -p 26000 -r
\c enmdb user1
show SEARCH_PATH;

7.在用户级设置模式搜索顺序:
ALTER USER user1 SET SEARCH_PATH TO schm2;
\q
gsql -d postgres -p 26000 -r
\c enmdb user1
show SEARCH_PATH;

二、心得体会
通过第12天的学习,我知道了在一个数据库中,可以有多个模式,知道了opengauss数据库的模式管理,openGauss的模式是对数据库做一个逻辑分割。所有的数据库对象都建立在模式下面。openGauss的模式和用户是弱绑定的,所谓的弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。模式可以把一组对象组织在一起。这样组织机构有多少个应用,我们可以将数据库对象组织成几个模式;组织机构有几个部门,也可以为该部门创建单独的模式。默认情况下,用户将访问数据库的public模式。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






