一、学习目标
openGauss的模式是对数据库做一个逻辑分割。
所有的数据库对象都建立在模式下面。
openGauss的模式和用户是弱绑定的,所谓的弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。
在一个数据库中,可以有多个模式。
模式可以把一组对象组织在一起。
这样组织机构有多少个应用,我们可以将数据库对象组织成几个模式;组织机构有几个部门,也可以为该部门创建单独的模式。默认情况下,用户将访问数据库的public模式。
二、课程学习
模式管理包括为数据库创建模式、删除模式、查看和设置模式的搜索路径、查看模式中的信息。
三、课程作业
测试环境准备:
- 连接数据库:
- 清除已有的环境:
- 此时环境如下
可以开始进行操作了!
1.创建一个名为testsm、testsm1的模式
create schema testsm;
create schema testsm1;
\dn+查看模式信息
属于omm的模式
2.创建一个用户john, 并将testsm的owner修改为john,且修改owner前后分别使用\dn+查看模式信息
CREATE USER john IDENTIFIED BY ‘kunpeng@1234’;
ALTER USER john SYSADMIN;
修改前\dn+查看模式信息(多了一个创建用户默认创建的同名john的模式,Owner为john)
充分说明了openGauss中模式的弱绑定(创建用户的同时会自动创建一个同名模式)
修改权限
ALTER SCHEMA testsm OWNER TO john;
再次通过\dn+查看模式信息
此时testsm的owner已经成功修改为john
3.重命名testsm为testsm2
ALTER SCHEMA testsm RENAME TO testsm2;
通过\dn+查看重命名后的模式信息
此时testsm已经成功重命名为testsm2
4.在模式testsm1中建表t1、插入记录和查询记录
首先做个测试(创建一个测试表test,并\dt test,查看test表的Schema):
create table test(col1 char(10));
\dt test
发现:表是在默认模式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
创建用户Tim
CREATE USER Tim IDENTIFIED BY ‘kunpeng@1234’;
ALTER USER Tim SYSADMIN;
会话级修改(验证了创建用户会产生一个相应的模式)
SET SEARCH_PATH TO Tim;
5.在会话级设置模式搜索顺序
SET SEARCH_PATH TO 模式名;
SET SEARCH_PATH TO testsm1;
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;
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;
5,6,7说明:会话级模式搜索顺序的优先级最高,用户级模式搜索顺序的优先级第2,数据库级模式搜索顺序的优先级最低。
注意会话级:在gsql客户端会话中,执行命令SET SEARCH_PATH TO schm1可以修改模式搜索路径,但只在gsql客户端会话的持续过程中起作用,一旦退出gsql客户端会话,这个设置就丢失了。重新登录gsql会话将模式搜索路径恢复为默认值"$user",public。
四、个人小结
- 本次学习内容是对模式管理的全新认识,openGauss的模式和用户是弱绑定的,所谓的弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式,基于这个原理,在一个数据库中,可以有多个模式,而对于实际数据库设计,也能有更加好的应用拓展性。本次作业内容多,理解起来有些困难,需要多看看本章,这是需要我们掌握的内容,要坚持完成今天打卡,其实自己理解你会对openGauss的设计有更深的认识,会更加重视起模式,希望大家都继续坚持打卡,互勉加油!
评论

