在PostgreSQL中,所有的数据库对象都是属于模式中的对象。这里的数据库对象包括:表、索引、视图、存储过程、触发器等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都存放在相关的系统目录表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。
下面重点介绍一下PostgreSQL中的模式。视频讲解如下:
当创建一个数据库时,会为其自动创建一个名为“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中用户就是模式,它们是一对一的关系。