Skip to content

Datové typy PostgreSQL vysvětleny

Každý běžný datový typ sloupce v PostgreSQL, seskupený podle rodiny: celá čísla, desetinná čísla, text, čas, pravdivostní hodnoty a UUID, JSON, síťové adresy, složené typy a typy z rozšíření. Každý řádek ukazuje, co typ uchovává a kdy ho zvolit.

PostgreSQL má desítky typů, ale každodenní návrh schémat používá základní sadu. Opakující se volby jsou: integer versus numeric pro čísla, varchar versus text pro řetězce (text většinou stačí), timestamp versus timestamptz (pro cokoli reálného preferujte timestamptz) a json versus jsonb (preferujte jsonb, je binární a indexovatelný). Vyberte nejkonkrétnější typ, který stále pasuje; databáze ho za vás vynucuje.

Referenční tabulka · 46 položek
46 of 46 rows
Celá čísla
Celé číslo na 2 bajty od -32768 do 32767.Vzácně; jen když musíte ušetřit místo.
Celé číslo na 4 bajty, zhruba plus/mínus 2 miliardy.Výchozí sloupec pro celá čísla.
Celé číslo na 8 bajtů, zhruba plus/mínus 9 trilionů.Velmi velké počty nebo externí ID.
Automaticky narůstající celé číslo na 4 bajty.Starší automaticky číslované klíče; od PG 10 je doporučenou náhradou GENERATED AS IDENTITY.
Varianty serial na 2 a 8 bajtů.Automatické číslování odpovídající sloupci smallint nebo bigint.
Celé číslo, které tabulka generuje za vás (GENERATED ALWAYS AS IDENTITY).Moderní serial; standard SQL a bezpečnější proti ručním vkládáním.
Desetinná a plovoucí čísla
Exaktní desetinná čísla s libovolnou přesností.Peníze a cokoli, kde jsou chyby zaokrouhlení nepřípustné.
Plovoucí číslo jednoduché přesnosti na 4 bajty.Přibližné vědecké hodnoty, kde přesnost není kritická.
Plovoucí číslo dvojité přesnosti na 8 bajtů.Geoprostorová data, statistika a hodnoty příznaků ML.
Peněžní částka s pevným národním nastavením.Zřídka; numeric s kódem měny v aplikaci je přenositelnější.
Text
Text pevné délky, doplněný mezerami.Kódy známé šířky; zřídka potřeba.
Text proměnné délky s volitelným limitem.Omezené řetězce jako uživatelská jména nebo e-maily.
Text proměnné délky bez limitu délky.Obecný sloupec pro řetězce; oproti varchar žádná postih výkonu.
Čas
Kalendářní datum bez denního času.Narozeniny a data splatnosti.
Denní čas, s časovým pásmem nebo bez něj.Denní alarmy nebo otevírací doba.
Datum a čas bez časového pásma.Starší schémata; u nové práce se vyhněte.
Datum a čas uložený jako UTC, zobrazený v pásmu klienta.Výchozí volba pro jakýkoli reálný okamžik; preferujte před timestamp.
Časové rozpětí, například 2 dny nebo 3 hodiny.Trvání a aritmetika datumů.
Boolean, UUID a bajty
Pravda nebo nepravda.Příznaky a přepínače.
Univerzálně jedinečný identifikátor o délce 128 bitů.Nesekvenciální ID, která lze bezpečně zveřejnit (generujte v aplikaci nebo pomocí gen_random_uuid).
Surové binární bajty.Blobby, obrázky a neprůhledné payloady; velké soubory patří do objektového úložiště.
Bitové řetězce pevné nebo proměnné délky.Balíčkované příznaky a pole protokolů; jedinou hodnotou zapnuto/vypnuto zůstává boolean.
JSON a polostrukturovaná data
JSON parsovaný do binární, indexovatelné podoby.Flexibilní nebo vnořená data; doporučený JSON sloupec (podporuje GIN indexy).
JSON ponechaný jako původní text.Vzácně; jen když musíte zachovat pořadí klíčů nebo přesné mezery.
Text XML.Starší integrace, které vyžadují XML.
Zkompilovaný výraz cesty pro navigaci v datech JSON.Filtrování uvnitř jsonb pomocí jsonb_path_query a operátorů SQL/JSON.
Síť a vyhledávání
Adresa hostitele IPv4 nebo IPv6.Ukládání IP adres klientů nebo serverů.
Blok IP sítě, například 10.0.0.0/24.Pravidla firewallu a rozsahy podsítí.
MAC adresa o 6 nebo 8 bajtech (EUI-64).Identifikátory zařízení a síťových rozhraní.
Předzpracovaný text pro fulltextové vyhledávání.Vestavěné vyhledávání Postgresu, než sáhnete po samostatném vyhledávači.
Vyhledávací termíny kombinované s operátory AND, OR a prefixovými.Dotazová polovina fulltextového vyhledávání, porovnávaná proti tsvector pomocí @@.
Pozice ve write-ahead logu, číslo sekvence logu.Zpoždění replikace a monitorování záloh.
Složené a pokročilé
Pole libovolného základního typu, např. integer[].Seznamy jednoduchých hodnot; když položky potřebují vlastní sloupce, sáhněte po podřízené tabulce.
Jedna hodnota z pevného seznamu, který definujete.Stavová pole se stabilní sadou možností.
Vlastní složený typ z několika polí.Opakující se skupiny polí sdílené napříč tabulkami.
Souvislý rozsah mezi dvěma hranicemi.Rozvrhy, cenové pásky a rozsahy verzí, s operátory překryvu.
Základní typ zabalený do omezení, která definujete.Znovupoužitelná pravidla jako neprázdný e-mail, vynucená v každém sloupci, který ho používá.
Nepojmenovaný záznam typovaných hodnot.Návratové hodnoty funkcí PL/pgSQL a mezivýsledky dotazů.
Vestavěné dvourozměrné geometrické hodnoty.Jednoduchá rovinná geometrie; skutečné polohy vyžadují PostGIS.
Bezznaménkový 4bajtový systémový identifikátor objektu.Spojování systémových katalogů; ne pro sloupce aplikace.
Interní identifikační řetězec na 63 znaků.Dotazy do katalogu; pro cokoli uživatelského běžný text.
Typy z rozšíření
Páry klíč/hodnota jako řetězce v jedné hodnotě (rozšíření).Ploché mapy; jsonb to dnes pokrývá lépe.
Hierarchická cesta štítků jako news.tech.ai (rozšíření).Stromy s dotazy na předky a potomky.
Text, který se porovnává bez ohledu na velikost písmen (rozšíření).Jedinečnost bez rozlišení velikosti písmen, např. e-maily, bez indexu lower().
Geografické a geometrické objekty z rozšíření PostGIS.Dotazy na vzdálenost, obsažení a prostorové indexy.
Funkce rozšíření generující hodnoty UUID.Starší generování; od PG 13 je gen_random_uuid() vestavěné.