Úvod
PostgreSQL je open-source systém pro správu relačních databází známý svou robustností a rozšiřitelností. To také znamená, že PostgreSQL nabízí uživatelům různé typy dat.
V tomto tutoriálu se budeme zabývat různými vestavěnými datovými typy dostupnými v PostgreSQL.

Datové typy PostgreSQL
Při vytváření tabulky v PostgreSQL můžete určit datový typ pro každý sloupec. PostgreSQL podporuje širokou škálu vestavěných datových typů:
Postava
PostgreSQL používá znakové datové typy pro ukládání textových hodnot. V PostgreSQL jsou tři typy znakových dat:
Název | Popis |
znak(n), znak(n) | Řetězce s pevnou délkou, kde n je počet znaků. Prázdné místo vpravo vyplněné tak, aby se rovnalo n . |
proměnlivé znaky(n), varchar(n) | Řetězec s proměnnou délkou s omezením počtu znaků, kde n je počet znaků. |
text | Proměnná délka, neomezený řetězec. |
Číselné typy
Číselné datové typy zahrnout:
- Dvou-, čtyř- a osmibajtová celá čísla
- Čtyř- a osmibajtová čísla s plovoucí desetinnou čárkou
- Volitelná desetinná místa:
Název | Velikost úložiště | Popis | Rozsah |
mallint | 2 bajty | Celé číslo malého rozsahu. | -32768 až +32767 |
celé číslo | 4 bajty | Celé číslo středního rozsahu. | -2147483648 až +2147483647 |
velký | 8 bajtů | Celé číslo velkého rozsahu. | -9223372036854775808 až 9223372036854775807 |
desítkové | proměnná | Přesné desetinné číslo zadané uživatelem. | Až 131072 číslic před desetinnou čárkou. Až 16383 číslic za desetinnou čárkou |
numerické | proměnná | Přesné desetinné číslo zadané uživatelem. | až 131072 číslic před desetinnou čárkou. Až 16383 číslic za desetinnou čárkou |
skutečné | 4 bajty | Proměnná přesnost v desítkové soustavě. | Přesnost na 6 desetinných míst |
dvojitá přesnost | 8 bajtů | Proměnná přesnost v desítkové soustavě. | Přesnost na 15 desetinných míst |
malý seriál | 2 bajty | Malé autoinkrementující celé číslo. | 1 až 32767 |
sériový | 4 bajty | Střední autoinkrementující celé číslo. | 1 až 2147483647 |
velký seriál | 8 bajtů | Velké autoinkrementační celé číslo. | 1 až 9223372036854775807 |
Peněžní
Typ peněžních dat ukládá číselnou částku peněz s pevnou zlomkovou přesností. Tento typ ukládá až 8 bajtů dat s rozsahem -92233720368547758,08 až +92233720368547758,07 a používá numerické , celé číslo a velký datové typy jako hodnoty.
Datum/čas
PostgreSQL Podporuje všechny standardní SQL datové typy dat a času , s rozlišením 1 mikrosekunda nebo 14 číslic. Datum je jedinou výjimkou, s rozlišením jednoho dne, počítáno podle gregoriánského kalendáře:
Název | Velikost úložiště | Popis | Rozsah |
časové razítko | 8 bajtů | Datum a čas, bez časového pásma. | 4713 př.nl až 294276 nl |
časové razítko | 8 bajtů | Datum a čas s časovým pásmem. | 4713 př.nl až 294276 nl |
datum | 4 bajty | Datum. | 4713 př.nl až 294276 nl |
čas bez časového pásma | 8 bajtů | Čas dne, bez časového pásma. | 00:00:00 až 24:00:00 |
čas s časovým pásmem | 12 bajtů | Čas dne s časovým pásmem. | 00:00:00 + 1459 až 24:00:00-1459 |
interval | 12 bajtů | Časový interval. | -178000000 až 178000000 let |
Binární
PostgreSQL může uložit binární řetězce proměnné délky jako bytea datový typ , přičemž 1 nebo 4 bajty plus velikost skutečného binárního řetězce.
Booleovská hodnota
Booleovský datový typ je deklarován pomocí bool
nebo boolean
klíčová slova. Může obsahovat true (1) , false (0) nebo neznámé (null) hodnoty.
Výčet
Výčet typů dat sestávají ze statické, uspořádané sady hodnot, jako jsou čísla od 1 do 10 nebo měsíce v roce. Na rozdíl od jiných datových typů můžete vytvořit výčtové typy pomocí create type
příkaz:
CREATE TYPE year AS ENUM ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
Bitový řetězec
Typ bitového řetězce ukládá řetězce 1 a 0, které se používají k ukládání nebo vizualizaci bitových masek:
Název | Popis |
bit(n) | Ukládá bitový řetězec s pevnou délkou n znaky. |
různé(n) | Ukládá bitový řetězec různé délky až do n znaky. |
UUID
UUID (Universally Unique Identifiers) je sada 32 číslic vytvořená algoritmem. Skládá se z několika skupin po čtyřech, osmi a dvanácti číslicích oddělených pomlčkami:

Síťová adresa
PostgreSQL používá typy dat síťových adres pro ukládání adres IPv4, IPv6 a MAC:
Název | Velikost úložiště | Popis |
cidr | 7 nebo 19 bajtů | Ukládá sítě IPv4 a IPv6. |
inet | 7 nebo 19 bajtů | Ukládá hostitele a sítě IPv4 a IPv6. |
macaddr | 6 bajtů | Ukládá adresy MAC. |
Použití datových typů síťových adres má několik výhod oproti použití prostého textu. To zahrnuje úsporu úložného prostoru, specializované funkce a příkazy a snazší kontrolu chyb.
Vyhledávání textu
Datový typ vyhledávání textu umožňuje vyhledat nejlepší shodu ve sbírce dokumentů v přirozeném jazyce:
Název | Popis |
tsvector | Představuje dokument optimalizovaný pro textové vyhledávání se seznamem různých slov normalizovaných tak, aby sloučily různé varianty stejného slova (lexémy). |
tsquery | Ukládá klíčová slova, která je třeba hledat, a kombinuje je pomocí booleovských operátorů (AND, OR a NOT). |
Geometrické
Typy geometrických dat představují prostorové objekty vykreslené ve dvou rozměrech, jako jsou body, čáry a polygony:
Název | Velikost úložiště | Zastoupení | Číselný popis |
bod | 16 bajtů | Ukažte na rovině. | (x,y) |
řádek | 32 bajtů | Nekonečná čára. | ((x1,y1),(x2,y2)) |
lseg | 32 bajtů | Konečný segment čáry. | ((x1,y1),(x2,y2)) |
box | 32 bajtů | Obdélníkový rámeček. | ((x1,y1),(x2,y2)) |
cesta | 16+16n bajtů | Otevřená nebo uzavřená cesta. | ((x1,y1),...(xn,yn)) |
polygon | 40+16n bajtů | Mnohoúhelník. | ((x1,y1),...(xn,yn)) |
kruh | 24 bajtů | Kruh. | ((x,y),r) (středový bod a poloměr) |
XML
PostgreSQL umožňuje ukládat data XML jako datový typ XML pomocí XMLPARSE
funkce:
XMLPARSE (DOCUMENT [document name] WELLFORMED)
nebo:
XMLPARSE (CONTENT [XML content] WELLFORMED)
Kde:
[document name]
:Dokument XML s jedním kořenem.[XML content]
:Platná hodnota XMLWELLFORMED
:Tato možnost zaručuje, že [název dokumentu] nebo [obsah XML] se převede na správně vytvořený dokument XML. Použijte jej pouze v případě, že nechcete, aby databáze kontrolovala, zda je vstup správně vytvořen.
JSON
PostgreSQL nabízí dva datové typy JSON :
- json: Rozšíření textového datového typu s ověřením JSON. Tento datový typ ukládá data přesně tak, jak jsou (včetně mezer). Můžete jej rychle vložit do databáze, ale jeho načtení je relativně pomalé kvůli opětovnému zpracování.
- jsonb: Představuje data JSON v binárním formátu. Pomalejší vkládání do databáze, ale podpora indexování a nedostatek přepracování výrazně zrychlují načítání.

Pole
Datový typ pole umožňuje definovat sloupec tabulky jako vícerozměrné pole, které může používat jakýkoli základní, výčtový nebo složený datový typ. Pole můžete deklarovat, upravovat a prohledávat jako kterýkoli jiný sloupec v databázi.
Kompozitní
Složené datové typy umožňují použít řádek nebo záznam tabulky jako datový prvek. Podobně jako u datových typů polí můžete také deklarovat, vyhledávat a upravovat složené hodnoty.
Rozsah
Datové typy rozsahu používat diskrétní nebo spojité rozsahy jiných datových typů. Mezi vestavěné datové typy rozsahu patří:
Název | Popis |
int4range | Rozsah středně velkých celých čísel. |
int8range | Rozsah velkých celých čísel. |
numrange | Rozsah uživatelem zadaných přesných desetinných míst. |
zvláštní | Rozsah časů a dat bez časového pásma. |
tstzrange | Rozsah časů a dat s časovým pásmem. |
rozsah dat | Rozsah dat. |
Můžete také vytvořit vlastní typy rozsahů pomocí jiných datových typů jako základu.
Identifikátor objektu
PostgreSQL používá identifikátory objektů jako systémy primárního klíče při provádění specializovaných vstupních a výstupních operací:
Název | Odkazy | Popis |
oid | jakýkoli | Číselný identifikátor objektu. |
regproc | pg_proc | Název funkce. |
regprocedura | pg_proc | Funkce s typy argumentů. |
regoper | pg_operator | Jméno operátora. |
regoperátor | pg_operator | Operátor s typy argumentů. |
regclass | pg_class | Název vztahu. |
regtype | pg_type | Název typu dat. |
regconfig | pg_ts_config | Konfigurace textového vyhledávání. |
regdictionary | pg_ts_dict | Slovník pro vyhledávání textu. |
Pseudotypy
Pseudotypy jsou sbírkou speciálních položek pro deklarování argumentu funkce nebo typu výsledku:
Název | Popis |
jakýkoli | Funkce přijímá jakýkoli typ vstupních dat. |
jakýkoli prvek | Funkce přijímá jakýkoli typ dat. |
anyarray | Funkce přijímá libovolný datový typ pole. |
anynonarray | Funkce přijímá jakýkoli typ dat, který není v poli. |
anyenum | Funkce přijímá jakýkoli výčtový typ dat. |
jakýkoli | Funkce přijímá libovolný datový typ rozsahu. |
cstring | Funkce přijímá nebo vrací řetězec C zakončený nulou. |
interní | Funkce přijímá nebo vrací interní datový typ serveru. |
language_handler | Funkce vrací obslužný program jazyka. |
fdw_handler | Obslužný program obálky cizích dat vrací fdw_handler. |
záznam | Najde funkci, která vrátí nespecifikovaný typ řádku. |
spouštěč | Funkce spouštění vrací spouštěč. |
neplatné | Funkce nevrací žádnou hodnotu. |