The information schema consists of a set of views that contain
information about the objects defined in the current database. The
information schema is defined in the SQL standard and can therefore
be expected to be portable and remain stable — unlike the system
catalogs, which are specific to
PostgreSQL and are modelled after
implementation concerns. The information schema views do not,
however, contain information about
PostgreSQL-specific features; to inquire
about those you need to query the system catalogs or other
PostgreSQL-specific views.
The information schema itself is a schema named
information_schema. This schema automatically
exists in all databases. The owner of this schema is the initial
database user in the cluster, and that user naturally has all the
privileges on this schema, including the ability to drop it (but
the space savings achieved by that are minuscule).
By default, the information schema is not in the schema search
path, so you need to access all objects in it through qualified
names. Since the names of some of the objects in the information
schema are generic names that might occur in user applications, you
should be careful if you want to put the information schema in the
path.