头图

在PostgreSQL中,所有的数据库对象都是属于模式中的对象。这里的数据库对象包括:表、索引、视图、存储过程、触发器等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都存放在相关的系统目录表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。

下面重点介绍一下PostgreSQL中的模式。视频讲解如下:
https://www.bilibili.com/video/BV1TapCenEVC/?aid=112986412813...

当创建一个数据库时,会为其自动创建一个名为“public”的默认Schema。Schema是数据库中的命名空间,在数据库中创建的所有对象都是在Schema中创建。一个用户可以从同一个客户端连接中访问不同的Schema。而不同的Schema中可以有多个同名的表、索引、视图、序列、函数等等各种不同的数据库对象。可以通过下面的方式来查看当前数据库的Schema。

postgres=# \dn

#输出的信息如下:  

  List of schemas
  Name  |  Owner   
--------+----------
 public | postgres
(1 row)

用户也可以创建自己的模式,例如:下面的语句创建了一个名叫demo的模式,并在该模式上创建了一张表。

postgres=# create schema demo;
postgres=# create table demo.table1(tid int,tname varchar(10));

注意,在Oracle数据库中也存在模式的概念。当创建一个Oracle用户的时候会自动创建一个同名的模式;也就是说,在Oracle中用户就是模式,它们是一对一的关系。


赵渝强老师
33 声望11 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...