<!-- doc/src/sgml/intro.sgml -->

<preface id="preface">
 <title>Preface</title>

 <para>
  This book is the official documentation of
  <productname>PostgreSQL</productname>.  It has been written by the
  <productname>PostgreSQL</productname> developers and other
  volunteers in parallel to the development of the
  <productname>PostgreSQL</productname> software.  It describes all
  the functionality that the current version of
  <productname>PostgreSQL</productname> officially supports.
 </para>

 <para>
  To make the large amount of information about
  <productname>PostgreSQL</productname> manageable, this book has been
  organized in several parts.  Each part is targeted at a different
  class of users, or at users in different stages of their
  <productname>PostgreSQL</productname> experience:

  <itemizedlist>
   <listitem>
    <para>
     <xref linkend="tutorial"/> is an informal introduction for new users.
    </para>
   </listitem>

   <listitem>
    <para>
     <xref linkend="sql"/> documents the <acronym>SQL</acronym> query
     language environment, including data types and functions, as well
     as user-level performance tuning.  Every
     <productname>PostgreSQL</productname> user should read this.
    </para>
   </listitem>

   <listitem>
    <para>
     <xref linkend="admin"/> describes the installation and
     administration of the server.  Everyone who runs a
     <productname>PostgreSQL</productname> server, be it for private
     use or for others, should read this part.
    </para>
   </listitem>

   <listitem>
    <para>
     <xref linkend="client-interfaces"/> describes the programming
     interfaces for <productname>PostgreSQL</productname> client
     programs.
    </para>
   </listitem>


   <listitem>
    <para>
     <xref linkend="server-programming"/> contains information for
     advanced users about the extensibility capabilities of the
     server.  Topics include user-defined data types and
     functions.
    </para>
   </listitem>

   <listitem>
    <para>
     <xref linkend="reference"/> contains reference information about
     SQL commands, client and server programs.  This part supports
     the other parts with structured information sorted by command or
     program.
    </para>
   </listitem>

   <listitem>
    <para>
     <xref linkend="internals"/> contains assorted information that might be of
     use to <productname>PostgreSQL</productname> developers.
    </para>
   </listitem>
  </itemizedlist>
 </para>

 <sect1 id="intro-whatis">
  <title> What Is <productname>PostgreSQL</productname>?</title>

  <para>
   <productname>PostgreSQL</productname> is an object-relational
   database management system (<acronym>ORDBMS</acronym>) based on
   <ulink url="https://dsf.berkeley.edu/postgres.html">
   <productname>POSTGRES, Version 4.2</productname></ulink>,
   developed at the University of California at Berkeley Computer Science
   Department.  POSTGRES pioneered many concepts that only became
   available in some commercial database systems much later.
  </para>

  <para>
   <productname>PostgreSQL</productname> is an open-source descendant
   of this original Berkeley code.  It supports a large part of the SQL
   standard and offers many modern features:

   <itemizedlist spacing="compact">
    <listitem>
     <simpara><link linkend="sql">complex queries</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="ddl-constraints-fk">foreign keys</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="triggers">triggers</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="sql-createview-updatable-views">updatable views</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="transaction-iso">transactional integrity</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="mvcc">multiversion concurrency control</link></simpara>
    </listitem>
   </itemizedlist>

   Also, <productname>PostgreSQL</productname> can be extended by the
   user in many ways, for example by adding new

   <itemizedlist spacing="compact">
    <listitem>
     <simpara><link linkend="datatype">data types</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="functions">functions</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="functions">operators</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="functions-aggregate">aggregate functions</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="indexes">index methods</link></simpara>
    </listitem>
    <listitem>
     <simpara><link linkend="server-programming">procedural languages</link></simpara>
    </listitem>
   </itemizedlist>
  </para>

  <para>
   And because of the liberal license,
   <productname>PostgreSQL</productname> can be used, modified, and
   distributed by anyone free of charge for any purpose, be it
   private, commercial, or academic.
  </para>
 </sect1>

 &history;
 &notation;
 &info;
 &problems;

</preface>
