22.1. Overview

少数对象(例如角色,数据库和表空间名称)是在集群级别定义的,并存储在pg_global表空间中。集群内部有多个数据库,这些数据库彼此隔离,但可以访问集群级别的对象。每个数据库内部都有多个模式,其中包含表和函数之类的对象。因此完整的层次结构是:集群,数据库,架构,表(或其他某种对象,例如函数)。

连接到数据库服务器时,Client 端必须在其连接请求中指定要连接的数据库的名称。每个连接最多只能访问一个数据库。但是,应用程序在打开到相同或其他数据库的连接数方面不受限制。数据库在物理上是分离的,并且访问控制是在连接级别上进行 Management 的。如果一个 PostgreSQL 服务器实例用于容纳应该分开的项目或用户,并且大多数情况下彼此不了解,则建议将它们放在单独的数据库中。如果项目或用户是相互关联的,并且应该能够使用彼此的资源,则应将它们放在同一数据库中,但可能放在单独的架构中。模式是纯粹的逻辑结构,谁可以访问特权系统 Management 的内容。有关 Management 架构的更多信息,请参见Section 5.8

使用CREATE DATABASE命令创建数据库(请参见Section 22.2),并使用DROP DATABASE命令破坏数据库(请参见Section 22.5)。要确定现有数据库的集合,请检查pg_database系统目录,例如

SELECT datname FROM pg_database;

psql程序的\l元命令和-l命令行选项对于列出现有数据库也很有用。

Note

SQL 标准将数据库称为“目录”,但实际上没有区别。