选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

第 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标准将数据库称为目录,但在实践中两者没有区别。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。