↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 9.3 已结束支持。 2018-11-08. 请参阅 当前版本手册.

第 21 章 管理数据库

每个正在运行的PostgreSQL服务器实例都管理着一个或多个数据库。因此,数据库是组织SQL对象(“数据库对象”)的最高层级。本章描述数据库的属性,以及如何创建、管理和删除数据库。

21.1. 概述 #

数据库是一个命名的SQL对象(“数据库对象”)集合。通常,每个数据库对象(表、函数等)都属于且只属于一个数据库。(不过也有少量系统目录,例如pg_database,属于整个集簇,可以从集簇中的每个数据库访问。)更准确地说,数据库是模式的集合,而模式中包含表、函数等。因此完整的层次结构是:服务器、数据库、模式、表(或其他类型的对象,如函数)。

当连接到数据库服务器时,客户端必须在连接请求中指定要连接的数据库名。一个连接无法访问多个数据库。不过,一个应用可以不受限制地打开到同一数据库或其他数据库的多个连接。数据库在物理上是相互隔离的,访问控制在连接级别管理。因此,如果一个PostgreSQL服务器实例要容纳彼此应当分离、并且在大多数情况下互不知晓的项目或用户,建议把它们放到不同的数据库中。如果项目或用户是相互关联的,并且应该能够使用彼此的资源,则应当把它们放在同一个数据库中,但可能使用不同的模式。模式是纯逻辑结构,谁能访问什么由权限系统管理。更多关于管理模式的信息见第 5.7 节。

数据库使用CREATE DATABASE命令创建(见第 21.2 节),使用DROP DATABASE命令删除(见第 21.5 节)。要确定现有数据库的集合,可以检查系统目录pg_database,例如:

SELECT datname FROM pg_database;

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

注意

SQL标准将数据库称为“目录”,但在实践中两者没有区别。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.