正文

openGauss的SCHEMA的原理及管理介绍(opencha是什么意思)没想到

文章摘要

这篇文章介绍了openGauss数据库中的Schema管理机制及其相关操作。Schema作为数据库中的逻辑结构,允许多个用户共享同一数据库并避免干扰。文章详细说明了Schema的创建、修改、删除及赋权管理语法,并通过示例展示了如何在不同Schema下操作对象(如表、用户等)。此外,文章强调了Schema的组织性,每个数据库可包含多个Schema,且不允许嵌套。需要注意的是,默认情况下公共Schema(public)仅系统管理员和初始化用户可操作,其他用户需特定权限才能创建或修改对象。文章还补充了通过系统视图查询Schema下表列表的方法。


目录 1.何为Schema摘要: 2.Schema语法? 2.1 创建SCHEMA? 2.2 修改SCHEMA? 2.3 删除SCHEMA 3.Schema赋权

本篇介绍了openGauss的SCHEMA的原理及管理。

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

数据库(database)、用户(user)、schema、和表的关系如下图所示:

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

注意要点

相同的数据库对象名称可以应用在同一数据库的不同Schema中 CREATE USER创建用户的同时,系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA 可以把schema理解成操作系统的目录(文件夹),所不同的是schema只有一层,不能嵌套创建

语法:CREATE SCHEMA schema_name [ AUTHORIZATION user_name ] ;

案例1:创建一个名为tpcds的模式

openGauss=# create schema tpcds; openGauss=# \dn+ tpcds List of schemas Name | Owner | Access privileges | Description | WithBlockChain ——-+——-+——————-+————-+—————- tpcds | omm | | | f

修改模式的名称语法:ALTER SCHEMA schema_name RENAME TO new_name; 修改模式的所有者语法:ALTER SCHEMA schema_name OWNER TO new_owner;

案例1:重命名tpcds为tpcds1

openGauss=# ALTER SCHEMA tpcds RENAME TO tpcds1; ALTER SCHEMA openGauss=# \dn+ tpcds1 List of schemas Name | Owner | Access privileges | Description | WithBlockChain ——–+——-+——————-+————-+—————- tpcds1 | omm | | | f

案例2:创建一个用户jeames, 并将tpcds1的owner修改为jeames

openGauss=# CREATE USER jeames PASSWORD ‘abcd@123’; CREATE ROLE openGauss=# \dn List of schemas Name | Owner —————–+——– blockchain | omm cstore | omm db4ai | omm dbe_perf | omm dbe_pldebugger | omm dbe_pldeveloper | omm jeames | jeames mesdb | mesdb pkg_service | omm public | omm snapshot | omm sqladvisor | omm tpcds1 | omm (13 rows) openGauss=# ALTER SCHEMA tpcds1 OWNER TO jeames; ALTER SCHEMA openGauss=# \dn+ tpcds1 List of schemas Name | Owner | Access privileges | Description | WithBlockChain ——–+——–+——————-+————-+—————- tpcds1 | jeames | | | f

案例3:在模式tpcds1中建表customer、插入记录和查询记录 

openGauss=# create table tpcds1.customer(id int, name char(30)); CREATE TABLE openGauss=# insert into tpcds1.customer values(1 ,’xxxx’); INSERT 0 1 openGauss=# select * from tpcds1.customer; id | name —-+——————————– 1 | xxxx

语法:DROP SCHEMA schema_name; 注:不要随意删除pg_temp或pg_toast_temp开头的模式,这些模式是系统内部使用的

DROP SCHEMA tpcds1 CASCADE;

补充

要查看属于某Schema下的表列表,请查询系统视图PG_TABLES: openGauss=# SELECT distinct(tablename),schemaname from pg_tables where schemaname=’pg_catalog’;

普通schema的create权限grant给其他用户后,其他用户即可以创建对象。

分别创建schema teacher_zhao2、teacher_zhao3(指定AUTHORIZATION),并把create权限赋给teacher_li: openGauss=# create SCHEMA teacher_zhao2; CREATE SCHEMA openGauss=# \dn+ teacher_zhao2 List of schemas Name | Owner | Access privileges | Description | WithBlockChain —————+——-+——————-+————-+—————- teacher_zhao2 | omm | | | f openGauss=# CREATE SCHEMA teacher_zhao3 AUTHORIZATION jeames; CREATE SCHEMA openGauss=# \dn+ teacher_zhao3 List of schemas Name | Owner | Access privileges | Description | WithBlockChain —————+——–+——————-+————-+—————- teacher_zhao3 | jeames | | | f 可以发现没有指定AUTHORIZATION的情况下,默认创建用户是clouduser(系统管理员), 而指定情况下,则创建用户就是指定的用户。

下面尝试用jeames登录,创建数据库对象teacher_zhao2.t2:

openGauss=# grant create on SCHEMA teacher_zhao2 to jeames; openGauss=# grant all on all tables in schema teacher_zhao2 to jeames; openGauss=# grant select on teacher_zhao2.t2 to jeames; openGauss=> create table teacher_zhao2.t2(a int); openGauss=# \c postgres jeames openGauss=> create table teacher_zhao2.t2(a int);

以上就是openGauss的SCHEMA的原理及管理介绍的详细内容,更多关于openGauss SCHEMA管理的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:windows环境下python连接openGauss数据库的全过程教你使用Psycopg2连接openGauss的方法Linux环境下的Java(JDBC)连接openGauss数据库实践记录Monaco-editor 的 JSON Schema 配置及使用介绍JSON schema配置规范使用教程JSON?Schema概念及使用场景