模式schema是数据库中的一个概念,可以将其理解为一个命名空间。不同的模式下可以有相同名称的 表、函数等对象且互相不冲突。提出模式的概念是为了便于管理,只要有权限,每个模式(schema)的 对象可以互相调用。
在 PostgreSQL 中,一个数据库包含一个或多个模式,一个模式中又包含了表、函数及操作符等数据库 对象。
在PostgreSQL 中,不能同时访问不同数据库中的对象,当要访问另一个数据库中的表或其他对象时, 需要重新连接到这个新的数据库,而模式没有此限制。一个用户在连接到一个数据库后,就可以同时访 问这个数据库中多个模式的对象。
通常情况下,创建和访问表的时候都不用指定模式,实际上这时访问的都是public模式。每当我们创建 一个新的数据库时,PostgreSQL都会自动创建一个名为 public 的模式。当登录到该数据库时,如果没 有特殊的指定,都是以该模式public操作各种数据对象的。
我们需要使用模式有以下几个主要原因: 允许多个用户在使用同一个数据库时彼此互不干扰。
把数据库对象放在不同的模式下,然后组织成逻辑组,让它们更便于管理。
第三方的应用可以放在不同的模式中,这样就不会和其他对象的名字冲突了。
查看schema
postgres=# \dn List of schemas Name | Owner --------+---------- public | postgres (1 row)
#创建模式 create schema schema_name; #删除模式 drop schema schema_name; #查看模式 \dn
要访问指定模式中的对象,需要先指定一个包含模式名及表名的名字,模式和表之间用一个“点”分开, 如下
schema_name.table_name