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
Datové typy PostgreSQLExplained
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.