PostgreSQLの型システムはいくつかの方法で分解することができます。型は基本型と複合型に分かれます。基本型はたとえばint4のようなもので、Cのような言語で書かれています。これらは一般的に抽象データ型として知られるものに対応しています。PostgreSQLはユーザーに定義されるメソッドを通してのみ演算を行うことができ、ユーザーが定義する範囲しか理解しません。複合型はユーザーがテーブルを作ると作られます。
PostgreSQLはこれらの型を1つの方法でのみ格納しますが(テーブルのすべての行を格納しているファイルの中で)、ユーザーはこれらの型の属性の内部を問い合わせ言語で"見る"ことができ、(たとえば)その属性のインデックスを定義することで抽出を最適化することができます。 PostgreSQLの基本型はさらに、組み込み型とユーザー定義型に分かれます。組み込み型(int4など)は、システムにコンパイルされているものです。ユーザー定義型は、以下に説明するような方法でユーザーが作ります。