21.1. Overview
A database is a named collection ofSQL objects (“database objects”). Generally, every database object (tables, functions, etc.) belongs to one and only one database. (However there are a few system catalogs, for example When connecting to the database server, a client must specify in its connection request the name of the database it wants to connect to. It is not possible to access more than one database per connection. However, an application is not restricted in the number of connections it opens to the same or other databases. Databases are physically separated and access control is managed at the connection level. If onePostgres Pro server instance is to house projects or users that should be separate and for the most part unaware of each other, it is therefore recommended to put them into separate databases. If the projects or users are interrelated and should be able to use each other's resources, they should be put in the same database but possibly into separate schemas. Schemas are a purely logical structure and who can access what is managed by the privilege system. More information about managing schemas is inSection 5.8. Databases are created with the Thepsql program'spg_database
, that belong to a whole cluster and are accessible from each database within the cluster.) More accurately, a database is a collection of schemas and the schemas contain the tables, functions, etc. So the full hierarchy is: server, database, schema, table (or some other kind of object, such as a function).CREATE DATABASE
command (seeSection 21.2) and destroyed with theDROP DATABASE
command (seeSection 21.5). To determine the set of existing databases, examine thepg_database
system catalog, for exampleSELECT datname FROM pg_database;
\l
meta-command and-l
command-line option are also useful for listing the existing databases.