INTRO

Welcome to the PostgreSQL Tutorial. The following few chapters are
intended to give a simple introduction to PostgreSQL, relational
database concepts, and the SQL language to those who are new to any one
of these aspects. We only assume some general knowledge about how to use
computers. No particular Unix or programming experience is required.
This part is mainly intended to give you some hands-on experience with
important aspects of the PostgreSQL system. It makes no attempt to be a
complete or thorough treatment of the topics it covers.

After you have worked through this tutorial you might want to move on to
reading [part\_title](#sql) to gain a more formal knowledge of the SQL
language, or [part\_title](#client-interfaces) for information about
developing applications for PostgreSQL. Those who set up and manage
their own server should also read [part\_title](#admin).

START QUERY ADVANCED

This part describes the use of the SQL language in PostgreSQL. We start
with describing the general syntax of SQL, then explain how to create
the structures to hold data, how to populate the database, and how to
query it. The middle part lists the available data types and functions
for use in SQL commands. The rest treats several aspects that are
important for tuning a database for optimal performance.

The information in this part is arranged so that a novice user can
follow it start to end to gain a full understanding of the topics
without having to refer forward too many times. The chapters are
intended to be self-contained, so that advanced users can read the
chapters individually as they choose. The information in this part is
presented in a narrative fashion in topical units. Readers looking for a
complete description of a particular command should see
[???](#reference).

Readers of this part should know how to connect to a PostgreSQL database
and issue SQL commands. Readers that are unfamiliar with these issues
are encouraged to read [part\_title](#tutorial) first. SQL commands are
typically entered using the PostgreSQL interactive terminal psql, but
other programs that have similar functionality can be used as well.

SYNTAX DDL DML QUERIES DATATYPE FUNC TYPECONV INDICES TEXTSEARCH MVCC
PERFORM PARALLEL

This part covers topics that are of interest to a PostgreSQL database
administrator. This includes installation of the software, set up and
configuration of the server, management of users and databases, and
maintenance tasks. Anyone who runs a PostgreSQL server, even for
personal use, but especially in production, should be familiar with the
topics covered in this part.

The information in this part is arranged approximately in the order in
which a new user should read it. But the chapters are self-contained and
can be read individually as desired. The information in this part is
presented in a narrative fashion in topical units. Readers looking for a
complete description of a particular command should see
[???](#reference).

The first few chapters are written so they can be understood without
prerequisite knowledge, so new users who need to set up their own server
can begin their exploration with this part. The rest of this part is
about tuning and management; that material assumes that the reader is
familiar with the general use of the PostgreSQL database system. Readers
are encouraged to look at [part\_title](#tutorial) and
[part\_title](#sql) for additional information.

INSTALLBIN INSTALLATION INSTALLW RUNTIME CONFIG CLIENT-AUTH USER-MANAG
MANAGE-AG CHARSET MAINTENANCE BACKUP HIGH-AVAILABILITY MONITORING
DISKUSAGE WAL LOGICAL-REPLICATION JIT REGRESS

This part describes the client programming interfaces distributed with
PostgreSQL. Each of these chapters can be read independently. Note that
there are many other programming interfaces for client programs that are
distributed separately and contain their own documentation
([???](#external-projects) lists some of the more popular ones). Readers
of this part should be familiar with using SQL commands to manipulate
and query the database (see [part\_title](#sql)) and of course with the
programming language that the interface uses.

LIBPQ LOBJ ECPG INFOSCHEMA

This part is about extending the server functionality with user-defined
functions, data types, triggers, etc. These are advanced topics which
should probably be approached only after all the other user
documentation about PostgreSQL has been understood. Later chapters in
this part describe the server-side programming languages available in
the PostgreSQL distribution as well as general issues concerning
server-side programming languages. It is essential to read at least the
earlier sections of [???](#extend) (covering functions) before diving
into the material about server-side programming languages.

EXTEND TRIGGER EVENT-TRIGGER RULES XPLANG PLSQL PLTCL PLPERL PLPYTHON
SPI BGWORKER LOGICALDECODING REPLICATION-ORIGINS ARCHIVE-MODULES

REFERENCE

This part contains assorted information that might be of use to
PostgreSQL developers.

ARCH-DEV CATALOGS PROTOCOL SOURCES NLS PLHANDLER FDWHANDLER
TABLESAMPLE-METHOD CUSTOM-SCAN GEQO TABLEAM INDEXAM GENERIC-WAL
CUSTOM-RMGR BTREE GIST SPGIST GIN BRIN HASH STORAGE BKI PLANSTATS
BACKUP-MANIFEST

ERRCODES DATETIME KEYWORDS FEATURES RELEASE CONTRIB EXTERNAL-PROJECTS
SOURCEREPO DOCGUIDE LIMITS ACRONYMS GLOSSARY COLOR OBSOLETE

BIBLIO
