PG 的用户与模式

在PG中用户对象的集合叫做模式。

比如 postgres下有t1,t2,t3表,还有视图,索引等等,这些对象的集合就叫做模式。

postgres下所有对象的集合就叫做postgres模式。

不同的schema下可以有相同名字的对象。

在PG中一个用户可以拥有多个模式,一个模式只能属于一个用户。这与oracle不同,oracle中用户与模式是一一对应的。

比如:

创建一个用户u1

使用u1登录数据库

这里与oracle不同的:oracle创建一个用户默认没有任何的权限,在oracle中创建一个用户之后无法login和建表,但在PG中 新创建的一个用户默认有login和建表的权限,在PG中role没有login和建表的权限。

模式的管理方式:

1.默认管理方式

PG中创建一个表之后

比如:create table t1(......);那么该表属于public模式。

2.创建一个与用户名相同的模式,把所有的对象放在该模式下。

即用户名=模式名。这与oracle中模式的管理方式相同。

3.自行分类,按需求创建模式进行分类

在以后建表可以把对象放在不同的模式中方便分类。

授权某个模式下的对象访问权限给其它用户,则需要先授权访问该模式的权限给其它用户。

比如:

授权gaozhong模式下的qinghuagaozhong表给u2 可以这样写:

但u2在查询qinghuagaozhong表时还不能查询:

需要先把这个模式授权给其它用户:

这样u2用户就能查询 gaozhong模式下的qinggaohuazhong表了。

4.public模式

数据库初始化的时候会自动创建一个public模式,作用是我们创建一个对象的时候没有指定模式,会默认放在public模式下。

5.搜索路径

我们在自己创建的模式下面创建表,用\d命令看不见这张表,是因为我们的搜索路径不包括这个模式:

把这些模式放到 search_path中,以后用\d命令就可以查到了

但是这里面是有一个问题的,如果我们在对象下搜索到了t1这个表,那么在public中就不会显示t1这张表了,所以,在搜索的时候建议按照数据字典搜索:

相关推荐
vvvae12341 小时前
分布式数据库
数据库
雪域迷影2 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
bug菌¹2 小时前
滚雪球学Oracle[4.2讲]:PL/SQL基础语法
数据库·oracle
逸巽散人3 小时前
SQL基础教程
数据库·sql·oracle
月空MoonSky3 小时前
Oracle中TRUNC()函数详解
数据库·sql·oracle
momo小菜pa3 小时前
【MySQL 06】表的增删查改
数据库·mysql
向上的车轮4 小时前
Django学习笔记二:数据库操作详解
数据库·django
编程老船长4 小时前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
全栈师5 小时前
SQL Server中关于个性化需求批量删除表的做法
数据库·oracle
Data 3175 小时前
Hive数仓操作(十七)
大数据·数据库·数据仓库·hive·hadoop