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

openGauss每日一练第6天 | 模式创建、更改和删除等基本操作

原创 2021-12-07
1534

模式

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

每个数据库包含一个或多个Schema,数据库中的每个Schema包含表和其他类型的对象。
数据库创建初始,默认具有一个名为public的Schema,且所有用户都拥有此Schema的usage权限,只有系统管理员和初始化用户可以在public Schema下创建函数、存储过程和同义词对象,其他用户即使赋予create权限后也不可以创建上述三种对象。
可以通过Schema分组数据库对象。

相同的数据库对象名称可以应用在同一数据库的不同Schema中,而没有冲突。
具有所需权限的用户可以访问数据库的多个Schema中的对象。

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

创建模式的语法格式

--根据指定的名称创建模式
CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] [WITH BLOCKCHAIN] [ schema_element [ ... ] ];

--根据用户名创建模式
CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ];

参数说明
schema_name:模式名称。
AUTHORIZATION user_name:指定模式的所有者。当不指定schema_name时,把user_name当作模式名,此时user_name只能是角色名。
WITH BLOCKCHAIN:指定模式的防篡改属性,防篡改模式下的行存普通用户表将自动扩展为防篡改用户表。
schema_element:在模式里创建对象的SQL语句。

----创建一个角色role1

create role role1 identified by 'role1@123456';

---- 为用户role1创建一个同名schema,子命令创建的表films和winners的拥有者为role1

create schema authorization role1 create table films (title text, release date, awards text[]) create view winners as select title,release from films where awards is not null;

Image.png
Image.png

修改模式的语法格式

--修改模式的防篡改属性
ALTER SCHEMA schema_name { WITH | WITHOUT } BLOCKCHAIN

--修改模式的名称
ALTER SCHEMA schema_name RENAME TO new_name;

--修改模式的所有者
ALTER SCHEMA schema_name OWNER TO new_owner;

----将当前模式role1更名为role_new

alter schema role1 rename to role_new;

----新建用户并更改 role_new 的所有

create user lvzz password 'lvzz@123456'; alter schema role_new owner to lvzz;

Image.png

删除模式的语法格式

DROP SCHEMA [ IF EXISTS ] schema_name [, ...] [ CASCADE | RESTRICT ];

----删除schema

drop schema role_new cascade;

Image.png

课后作业

1、创建一个名为tpcds的模式

create schema tpcds; \dn+

Image.png

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

create user tim password 'tim@123456'; \dn+ alter schema tpcds owner to tim; \dn+

Image.png

3、重命名tpcds为tpcds1

alter schema tpcds rename to tpcds1; \dn+

Image.png

4、在模式tpcds1中建表customer、插入记录和查询记录

create table tpcds1.lvzz(id int, name varchar(20)); insert into tpcds1.lvzz values(1,'lvzz'); select * from tpcds1.lvzz;

Image.png

5、删除模式tpcds1

drop schema tpcds1 cascade; drop user tim;

Image.png

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论