Datové typy PostgreSQL: znak | Číselné | Binární | Boolean

PostgreSQL nabízí uživatelům bohatou sadu nativních datových typů. Uživatelé mohou přidávat nové typy pomocí příkazu CREATE TYPE. Díky tomu jsou dotazy také jednodušší a čitelnější.

Datové typy v PostgreSQL

PostgreSQL podporuje následující datové typy:

  • Typy textu
  • Číselné typy
  • Termíny a časy
  • XML
  • JSON
  • Boolean
  • Bity
  • Binární data
  • Síť
  • Pole
  • Vytvořte svůj datový typ
  • Boolean
  • Dočasný
  • UUID
  • Pole
  • JSON
  • Speciální datové typy pro ukládání síťové adresy a geometrických dat.

Pojďme si podrobně prostudovat datové typy PostgreSQL

Datové typy postav

PostgreSQL podporuje datové typy znaků pro ukládání textových hodnot. PostgreSQL staví datové typy znaků ze stejných interních struktur. PostgreSQL nabízí tři znakové datové typy: CHAR (n), VARCHAR (n) a TEXT.

názevPopis
varchar (n)Umožňuje deklarovat proměnnou délku s limitem
Char (n)Prázdná polstrovaná pevná délka
TextUse can use this data type to declare a variable with neomezená délka

Numerické datové typy

PostgreSQL podporuje dva odlišné typy čísel:

  • Celá čísla
  • Čísla s plovoucí desetinnou čárkou
názevVelikost obchoduRozsah
smallint2 bajty-32768 až +32767
celé číslo4 byty-2147483648 až +2147483647
bigint8 bajtů-9223372036854775808 až 9223372036854775807
desetinnýproměnnáPokud jste to deklarovali jako desetinný datový typ, pohybuje se od 131072 číslic před desetinnou čárkou do 16383 číslic za desetinnou čárkou
číselnéproměnnáPokud ho deklarujete jako číslo, můžete zahrnout číslo až 131072 číslic před desetinnou čárkou a 16383 číslic za desetinnou čárkou
nemovitý4 bytyPřesnost 6 desetinných číslic
dvojnásobek8 bajtůPřesnost 15 desetinných číslic

Binární datové typy

Binární řetězec je posloupnost oktetů nebo bajtů. Binární datové typy Postgres jsou rozděleny dvěma způsoby.

  • Binární řetězce umožňují ukládání šancí na hodnotu nula
  • Netisknutelné bajty

Znakové řetězce nepovolují nulové oktety a také zakazují jakékoli jiné hodnoty a sekvence oktetů, které jsou podle pravidel kódování znakové sady databáze neplatné.

názevVelikost úložištěPopis
Byte1 až 4 bajty plus velikost binárního řetězceBinární řetězec s proměnnou délkou

Typ síťové adresy

Mnoho aplikací ukládá informace o síti, jako je IP adresa uživatelů nebo

senzory. PostgreSQL má tři nativní typy, které vám pomohou optimalizovat síťová data.

názevVelikostPopis
jablečný mošt7 nebo 19 byesSítě IPV4 a IPv6
Inet7 nebo 19 bajtůHostitel a sítě IPV4 a IPV5
macaddr6 bajtůMAC adresy

Používání typů síťových adres má následující výhody

  1. Úspora úložného prostoru
  2. Kontrola chyby vstupu
  3. Funkce jako vyhledávání dat podle podsítě

Typ vyhledávání textu

PostgreSQL poskytuje dva datové typy, které jsou navrženy tak, aby podporovaly fulltextové vyhledávání. Fulltextové vyhledávání prohledává sbírku dokumentů v přirozeném jazyce a vyhledává ty, které nejlépe odpovídají dotazu.

  • Textové vyhledávání Tsvector Typy proměnných PostgreSQL představují dokument ve formě optimalizované pro textové vyhledávání
  • Textové vyhledávání typu dotazu ukládá klíčová slova, která je třeba prohledat

Datové typy data/času

Časové razítko PostgreSQL nabízí přesnost mikrosekund místo druhé přesnosti. Kromě toho máte také možnost ukládání s časovým pásmem nebo bez. PostgreSQL převede časové razítko s časovým pásmem na UTC na vstupu a uloží ho.

Vstup data a času je přijímán v různých formátech, včetně tradičních Postgres, ISO 8601. Kompatibilní s SQL atd.

PostgreSQL podporuje objednávání den / měsíc / rok. Podporované formáty jsou DMY, MDY, YMD

Dočasné datové typy

názevVelikostRozsahŘešení
Časové razítko bez časového pásma8 bajtů4713 př. N. L. Až 294276 n. L1 mikrosekunda/14 číslic
Časové razítko s časovým pásmem8 bajtů4713 př. N. L. Až 294276 n. L1 mikrosekunda/14 číslic
datum4 byty4713 př. N. L. Až 294276 n. LJednoho dne
Čas bez časového pásma8 bajtů00:00:00 až 24:00:001 mikrosekunda/14 číslic
Čas s časovým pásmem12 bajtů00:00:00 + 1459 až 24: 00: 00-14591 mikrosekunda/14 číslic
Časový úsek12 bajtů-178000000 až 178000000 let1 mikrosekunda/14 číslic

Příklady:

VstupPopis
2025-09-07ISO 8601, 7. září s libovolným stylem data (doporučený formát)
7. září 20257. září s libovolným stylem data
9.7.20257. září s MDY, 9. července s DMY
9. 7. 257. září 2025, s MDY
2025-září-77. září s libovolným stylem data
7. září 20187. září s libovolným stylem data
7. září-257. září 2025, s YMD
20250907ISO 8601,7, září 20225 v libovolném režimu
2,025,250rok a den roku, v tomto případě 7. září 2025
J25250Datum Julian

Čas/ čas se zadáním časového pásma

VstupPopis
11: 19: 38,507 11:19:38 11:19 111938ISO 8601
11:19Stejné jako 11:19
23:19stejně jako 23:19
23: 19-3 23: 19-03: 00 231900-03ISO 8601, stejně jako 23:19 EST
23:19 ESTčasové pásmo určené jako EST, stejné jako 23:19 EST

Booleovský typ

Booleovský datový typ může obsahovat

  • Skutečný
  • Nepravdivé
  • nula

hodnoty.

Používáte a bool nebo booleovský klíčové slovo pro deklarování sloupce s booleovským datovým typem.

Když vložíte hodnoty do booleovského sloupce, Postgre převede hodnoty jako

  • Ano
  • a
  • 1
  • t
  • skutečný

do 1.

Zatímco hodnoty jako

  • Ne
  • N.
  • 0
  • F
  • Nepravdivé

jsou převedeny na 0

Při výběru dat se hodnoty znovu převedou zpět na ano, true, y atd.

Geometrické datové typy

Geometrické datové typy představují dvourozměrné prostorové objekty. Pomáhají provádět operace, jako jsou rotace, škálování, překlad atd.

názevVelikost úložištěReprezentacePopis
Směřovat16 bajtůBod v letadle(x, y)
Čára32 bajtůNekonečná čára((xl.yl). (x2.y2))
Lseg32 bajtůSegment konečných čar((xl.yl). (x2.y2))
Krabice32 bajtůObdélníkový box((xl.yl). (x2.y2))
Cesta16n + 16n bytůZavřít a otevřít cestu((xl.yl), ...)
Polygon40 + 16n bytůPolygon[(xl.yl) ....]
Kruh24 bajtůKruh(středový bod a poloměr)

Výčtové typy

Výčet datového typu PostgreSQL je užitečný pro reprezentaci zřídka se měnících informací, jako je kód země nebo ID pobočky. Datový typ Enumerated je reprezentován v tabulce s cizími klíči, aby byla zajištěna integrita dat.

Příklad:

Barva vlasů je v demografické databázi | _+_ | poměrně statická

Typ rozsahu

Mnoho podnikových aplikací vyžaduje data v rozsahu. Pro řešení rozsahů jsou obvykle definovány dva sloupce (příklad: počáteční datum, koncové datum). To je neefektivní a náročné na údržbu.

Postgre vybudoval typy rozsahů následujícím způsobem

  • int4range - Rozsah zobrazení celého čísla
  • int8range - Zobrazí rozsah bigintu
  • numrange - zobrazuje číselný rozsah
  • tstrange - Pomůže vám zobrazit časové razítko bez časového pásma
  • divné - umožňuje zobrazit časové razítko s časovým pásmem
  • rozsah dat - Rozsah data

Typ UUID

Universally Unique Identifies (UUID) je 128bitová veličina, která je generována algoritmem. Je velmi nepravděpodobné, že stejný identifikátor vygeneruje jiná osoba na světě pomocí stejného algoritmu. Proto jsou pro distribuované systémy tyto identifikátory ideální volbou, protože nabízejí jedinečnost v rámci jedné databáze. UUID je zapsán jako skupina malých šestnáctkových číslic s různými skupinami oddělenými spojovníky.

PostgreSQL má nativní datový typ UUID, který spotřebuje 16 bajtů úložiště. UUID je ideální datový typ pro primární klíče.

Příklad:

CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')

Postgre také přijímá alternativní formy vstupů UUID, jako jsou velká písmena, žádné spojovníky, závorky atd.

Typ XML

PostgreSQL vám umožňuje ukládat data XML v datovém typu, ale není to nic jiného než rozšíření textového datového typu. Výhodou ale je, že kontroluje, zda je vstupní XML dobře tvarované.

Příklad:

d5f28c97-b962-43be-9cf8-ca1632182e8e

Typ JSON

Pro ukládání dat JSON nabízí PostgreSQL 2 datové typy

  1. JSON
  2. JSONB
jsonJsonb
Jednoduché rozšíření textového datového typu s ověřením JSONBinární reprezentace dat JSON
Vložení je rychlé, ale načítání dat relativně pomalé.Vložení je pomalé, ale vyberte (načítání dat je rychlé)
Ukládá zadaná data přesně tak, jak jsou, včetně mezer.Podporuje indexování. Může optimalizovat mezery, aby bylo načítání rychlejší.
Opětovné zpracování při načítání datPři načítání dat není nutné žádné další zpracování

Nejčastěji používaný datový typ JSON používal nás jsonb, pokud neexistuje nějaká specializovaná potřeba použít datový typ JSON.

Příklad:

XMLPARSE (DOCUMENT 'Data Type...')
 CREATE TABLE employee ( id integer NOT NULL, age integer NOT NULL, data jsonb ); 

Pseudo-typy

PostgreSQL má mnoho položek zvláštního účelu, které se nazývají pseudo-typy. Nemůžete použít pseudo typy jako typy sloupců PostgreSQL. Používají se k deklaraci nebo argumentu funkce nebo návratového typu.

Každý z dostupných pseudo typů je užitečný v situacích, kdy dokumenty chování funkce neodpovídají jednoduše převzetí nebo vrácení hodnoty konkrétního datového typu SQL.

názevPopis
ŽádnýFunkce přijímá všechny vstupní datové typy.
PoleFunkce přijímá jakýkoli datový typ pole.
Jakýkoli prvekFunkce přijímá jakýkoli datový typ.
Jakýkoli výčetFunkce přijímá jakýkoli datový typ výčtu.
NonarrayFunkce přijímá jakýkoli datový typ bez pole.
CstringFunkce přijímá nebo vrací řetězec C zakončený hodnotou null.
VnitřníInterní funkce přijímá nebo vrací interní datový typ serveru.
Language_handlerJe deklarováno pro vrácení obsluhy jazyka.
ZáznamNajděte funkci, která vrací neurčený typ řádku.
SpoušťK vrácení spouště slouží funkce spouště.

Je důležité, aby se uživatel, který používá tuto funkci, ujistil, že se funkce bude chovat bezpečně, když je jako typ argumentu použit pseudo-typ.

Osvědčené postupy využívající datové typy

  • Pokud chcete omezit vstup, použijte datový typ „text“
  • Nikdy nepoužívejte 'char.'
  • Celá čísla používají 'int.' Bigint používejte pouze tehdy, pokud máte opravdu velká čísla
  • Používejte „numerické“ téměř vždy
  • Pokud máte zdroj dat IEEE 754, použijte v PostgreSQL float

souhrn

  • PostgreSQL nabízí uživatelům bohatou sadu nativních datových typů
  • PostgreSQL podporuje datové typy znaků pro ukládání textových hodnot
  • PostgreSQL podporuje dva odlišné typy čísel: 1. Celá čísla, 2. Čísla s plovoucí desetinnou čárkou
  • Binární řetězec je posloupnost bajtů nebo oktetů
  • PostgreSQL má typ síťové adresy, který vám pomůže optimalizovat ukládání síťových dat
  • Textové vyhledávání Datové struktury PostgreSQL jsou navrženy tak, aby podporovaly fulltextové vyhledávání
  • Datum/čas Datové typy PSQL umožňují informace o datu a čase v různých formátech
  • Booleovské typy polí Postgres mohou obsahovat tři hodnoty 1. Pravda 2. Nepravda 3. Null
  • Geometrické datové typy PostgreSQL představují dvourozměrné prostorové objekty
  • Výčtové datové typy v PostgreSQL jsou užitečné pro reprezentaci zřídka se měnících informací, jako je kód země nebo ID pobočky
  • Universally Unique Identifies (UUID) je 128bitová veličina, která je generována algoritmem
  • PostgreSQL má mnoho položek zvláštního účelu, které se nazývají pseudo-typy
  • Pokud nechcete omezit vstup, je nejlepší použít datový typ „text“