postgresql下Schema和DataBase

database —> schema —> table

1.同一个实例下,不同database是不能相互访问的,即独立的。

2.同一个数据库,不同模式下的表是可以相互访问,即可共享的

3.不同模式下,表名可以是一样。也就是表在模式下是独立。

##授权某个库下的某个模式下有创建表的权限
grant create on database db_name to 'role_user';
grant create on schema sm_name to 'role_user';

类比理解:

postgresql中的database,可以看作mysql的一个实例
postgresql中的schema,可以看作mysql的database
postgresql中的table,可以看作mysql的table

 

postgresql的database和schema的理解_postgresql database schema-CSDN博客

 

=========================================================================================

PG的逻辑结构:

第一层是实例(Instance)。
第二层是数据库(Database);一个实例下有多个数据库;每个数据库之间是完全独立的。
第三层是Schema;数据库下面有多个Schema;其中“public” 是数据库创建时产生的。
每个Schema下面可以创建表,视图,索引,函数,序列,物化视图,外部表等等。

注意:

在PostgreSQL每个数据库是完全独立的;所以访问同一个实例下其他数据库需要借用 dblink或者fdw接口)。
在PostgreSQL同一实例下,不能直接访问其它数据库【MySQL可以,因为MYSQL跟PostgreSQL逻辑结构不一样,MYSQL实例中的数据库相当于PostgreSQL的第三层的Schema】

PostgreSQL教程--逻辑结构:实例、数据库、schema、表之间的关系_数据库schema和实例的区别-CSDN博客

 

=========================================================================================

实例/Database/Schema/对象关系
在PostgreSQL中,这几者之间关系为:

PG数据库服务(实例)

  └ database1

    └ schemaA

      └ table_T1

      └ table_T2

      └ view_V1

    └ schemaB

  └ database2

    └ schemaA

    └ schemaB

  └ database3

    └ schemaA

    └ schemaB

 

PG数据库服务(实例)中可以有多个数据库(database),在psql工具中可以通过\c切换所连接的库。每个数据库下有不同的shema、每个schema下有不同的对象。

MySQL没有上图中数据库概念,只有上图的schema(在MySQL中schema也称为database,实际应为schema)
在Oracle中,用户与Schema是绑定对应的,一个用户就是一个Schema。

03:PostgreSQL逻辑结构(表空间、数据库、模式、表、索引)_pg数据库创建模式-CSDN博客

posted @ 2024-08-28 11:46  钟吾零ZWL  阅读(23)  评论(0编辑  收藏  举报