Standard języka SQL obejmuje podstawowe typy danych: typy liczbowe, typy napisowe (ciągi znaków) oraz typy daty i czasu. Nie ma zgodności wśród producentów poszczególnych baz danych co do nazewnictwa oraz typów danych. Baza PostgreSQL posiada zdefiniowane następujące typy danych:

 

Nazwa Alias Opis
bigint int8 ośmiobitowa liczba całkowita ze znakiem
bigserial serial8 ośmiobitowy licznik
bit [ (n) ] - ciąg bitów o ustalonej długości
bit varying [ (n) ] varbit ciąg bitów o zmiennej długości
boolean bool typ logiczny (prawda/fałsz)
bytea - dane binarne
character
varying [ (n) ]
varchar[(n)] ciąg znaków o zmiennej długości
character [ (n) ] char[(n)] ciąg znaków o ustalonej długości
cidr - adres sieciowy IPv4 lub IPv6
date - data (rok, miesiąc, dzień)
double precision float8 liczba rzeczywista o podwójnej precyzji
inet - adres sieciowy IPv4 lub IPv6
integer int int4 czterobajtowa liczba całkowita ze znakiem
interval [ (p) ] - odstęp czasowy
macaddr - adres MAC
money - aktualna waluta
numeric [ (p, s) ] decimal[(p,s)] liczba o podanej precyzji
real float4 liczba rzeczywista - pojeduncza precyzja
smallint int2 dwubajtowa liczba całkowita ze znakiem
serial serial4 licznik czterobajtowy
text - tekst o zmiennej długości
time [ (p) ] [ without time zone ] - czas
time [ (p) ] with time zone timetz czas zawierający strefę czasową
timestamp [ (p) ] [ without time zone ] - data i czas
timestamp [ (p) ] with time zone timestamptz data, czas i strefa czasowa

Dodatkowe typy danych opisujących elementy płaszczyzny:

Nazwa Alias Opis
box - prostokąt
circle - okrąg
line - linia
lseg - zbiór linii
path - tor, droga
point - punkt
polygon - zamknięty wielokąt

Jak w każdej bazie SQL także w PostgreSQL możemy utworzyć własne typy danych. Umożliwia to deklaracja CREATE TYPE, której składnia wygląda następująco:

	CREATE TYPE nazwa_typu AS (nazwa_pola typ,....);

Przykładowa definicja współrzędnych x,y punktu może wyglądać następująco:

	CREATE TYPE punkt AS (x int4,y int4);

W ten sposób zdefiniujemy nowy typ danych punkt o polach x,y