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