PostgreSQL has a rich set of
native data types available to users. Users may add new types to
PostgreSQL using the CREATE TYPE command.

Table 8-1 shows all
the built-in general-purpose data types. Most of the alternative
names listed in the "Aliases" column
are the names used internally by PostgreSQL for historical reasons. In
addition, some internally used or deprecated types are available,
but they are not listed here.

Each data type has an external representation determined by
its input and output functions. Many of the built-in types have
obvious external formats. However, several types are either
unique to PostgreSQL, such as
geometric paths, or have several possibilities for formats, such
as the date and time types. Some of the input and output
functions are not invertible. That is, the result of an output
function may lose accuracy when compared to the original
input.