Les types de données de PostgreSQL™ sont répartis en types de base, types composites, domaines et pseudo-types.
Les types de base sont ceux qui, comme int4, sont implantés sous le niveau du langage SQL (typiquement dans un langage de bas niveau comme le C). Ils correspondent généralement à ce que l'on appelle les types de données abstraits. PostgreSQL™ ne peut opérer sur de tels types qu'au moyen de fonctions fournies par l'utilisateur et n'en comprend le fonctionnement que dans la mesure où l'utilisateur les décrit. Les types de base sont divisés en types scalaires et types tableaux. Pour chaque type scalaire, un type tableau est automatiquement créé destiné à contenir des tableaux de taille variable de ce type scalaire.
Les types composites, ou types lignes, sont créés chaque fois qu'un utilisateur crée une table. Il est égalment possible de définir un type composite autonome sans table associée. Un type composite n'est qu'une simple liste de types de base avec des noms de champs associés. Une valeur de type composite est une ligne ou un enregistrement de valeurs de champ. L'utilisateur peut accéder à ces champs à partir de requêtes SQL. La Section 8.11, « Types composites » fournit de plus amples informations sur ces types.
Un domaine est fondé sur un type de base particulier. Il est, dans de nombreux cas, interchangeables avec le type de base, mais ses valeurs peuvent être contraintes à un sous-ensemble des valeurs autorisées pour le type de base à l'aide de contraintes. Les domaines peuvent être créés par de simples commandes SQL.
Les domaines peuvent être créés à l'aide de la commande SQL CREATE DOMAIN. Leurs création et utilisation n'est pas l'objet de ce chapitre.
Il existe quelques « pseudo-types » pour des besoins particuliers. Les pseudo-types ne peuvent pas apparaître comme champs de table ou comme attributs de types composites, mais ils peuvent être utilisés pour déclarer les types des arguments et des résultats de fonctions. Dans le système de typage, ils fournissent un mécanisme d'identification des classes spéciales de fonctions. La Tableau 8.20, « Pseudo-Types » donne la liste des pseudo-types existant.