PostgreSQL Typy dat: Byte, Číselné, Znakové, Binární

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 jednodušší a čitelnější.

Typy dat v PostgreSQL

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

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

Pojďme se učit PostgreSQL datové typy podrobně

Datové typy znaků

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

Jméno Description
varchar(n) Umožňuje deklarovat proměnnou délku s limitem
Char(n) Pevná délka, prázdné polstrování
Text Use může tento datový typ použít k deklaraci proměnné s neomezenou délkou

Číselné datové typy

PostgreSQL podporuje dva různé typy čísel:

  • Celé číslo
  • Čísla s plovoucí desetinnou čárkou
Jméno Velikost obchodu Rozsah
smallint 2 bytů -32768 až + 32767
celé číslo 4 bytů -2147483648 až + 2147483647
bigint 8 bytů -9223372036854775808 na 9223372036854775807
desetinný proměnlivý Pokud jste jej deklarovali jako desetinný datový typ, rozsahy od 131072 číslic před desetinnou čárkou do 16383 číslic za desetinnou čárkou
numeric proměnlivý Pokud to deklarujete jako číslo, můžete před desetinnou čárkou vložit číslo o délce až 131072 číslic až po 16383 číslic za desetinnou čárkou
skutečný 4 bytů Přesnost na 6 desetinných míst
zdvojnásobit 8 bytů Přesnost na 15 desetinných míst

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í uložení pravděpodobnosti hodnoty nula
  • Netisknutelné oktety

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

Jméno Velikost úložiště Description
Byte 1 až 4 bajty plus velikost binárního řetězce Binární řetězec s proměnnou délkou

Typ síťové adresy

Mnoho aplikací ukládá síťové informace, jako jsou IP adresy uživatelů nebo senzorů. PostgreSQL má tři nativní typy, které vám pomohou optimalizovat síťová data.

Jméno Velikost Description
jablečný mošt 7 nebo 19 bajty IPv4 a IPv6 sítě
Inet 7 nebo 19 bajty Hostitel a sítě IPV4 a IPV5
macaddr 6 bytů MAC adresy

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

  1. Úspora úložného prostoru
  2. Kontrola chyb 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 pro podporu fulltextového vyhledávání. Fulltextové vyhledávání je prohledávání kolekce dokumentů v přirozeném jazyce za účelem hledání těch, které nejlépe odpovídají dotazu.

  • Tsvector textové vyhledávání PostgreSQL typy proměnných 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 hledat

Datové typy data/času

PostgreSQL časové razítko nabízí mikrosekundovou přesnost místo sekundové přesnosti. Navíc máte také možnost ukládání s časovým pásmem nebo bez. PostgreSQL převede časové razítko s časovou zónou na UTC na vstupu a uloží jej.

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

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

Časové datové typy

Jméno Velikost Rozsah Rozlišení
Časové razítko bez časového pásma 8 bytů 4713 př.nl až 294276 našeho letopočtu 1mikrosekunda/14 číslic
Časové razítko s časovým pásmem 8 bytů 4713 př.nl až 294276 našeho letopočtu 1mikrosekunda/14 číslic
datum 4 bytů 4713 př.nl až 294276 našeho letopočtu Jednoho dne
Čas bez časového pásma 8 bytů 00:00:00 to 24:00:00 1mikrosekunda/14 číslic
Čas s časovou zónou 12 bytů 00:00:00 + 1459 až 24:00:00-1459 1mikrosekunda/14 číslic
Interval 12 bytů -178000000 až 178000000 let 1mikrosekunda/14 číslic

Příklady

Vstup Description
2025-09-07 ISO 8601, 7. září s libovolným stylem data (doporučený formát)
Září 7, 2025 7. září s jakýmkoliv datem
9/7/2025 7. září s MDY, 9. července s DMY
9/7/25 7. září 2025, s MDY
2025-Sep-7 7. září s jakýmkoliv datem
7. září 2018 7. září s jakýmkoliv datem
7-Sep-25 7. září 2025 s YMD
20250907 ISO 8601,7 září 20225 v jakémkoli režimu
2025.250 rok a den v roce, v tomto případě 7. září 2025
J25250 Julian datum

Čas/čas se vstupem časového pásma

Vstup Description
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Stejně jako v 11:19
11: 19 PM stejně jako 23:19
23: 19 3,
23: 19 03-: 00
231900-03
ISO 8601, stejně jako ve 11:19 EST
23: 19 EST časové pásmo určené jako EST, stejné jako ve 11:19 EST

Booleovský typ

Booleovský datový typ může obsahovat

  • Pravdivý
  • Falešný
  • null

hodnoty.

Používáte a bool or boolean klíčové slovo pro deklaraci sloupce s datovým typem Boolean.

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

  • Ano
  • y
  • 1
  • t
  • pravdivý

do roku 1.

Zatímco hodnoty jako

  • Ne
  • N
  • 0
  • F
  • Falešný

jsou převedeny na 0

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

Geometrické datové typy

Geometrické datové typy představují dvourozměrné prostorové objekty. Pomáhají provádět operace, jako je rotace, změna měřítka, posun atd.

Jméno Velikost úložiště Reprezentace Description
Bod 16 bytů Bod na rovině (x,y)
Linka 32 bytů Nekonečná čára ((xl.yl ).(x2.y2))
Lseg 32 bytů Konečný úsečka ((xl.yl ).(x2.y2))
Box 32 bytů Obdélníkový Box ((xl.yl ).(x2.y2))
Cesta 16n + 16n bajtů Zavřít a otevřít cestu ((xl.yl),…)
Polygon 40 + 16n bajtů Polygon [(xl.yl)….]
Kruh 24 bytů Kruh <(xy).r> (střed a poloměr)

Vyjmenované typy

Výčet PostgreSQL datový typ 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á

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

Vyjmenované typy

Typ rozsahu

Mnoho podnikových aplikací vyžaduje data v rozsazích. Obvykle jsou pro rozsahy definovány dva sloupce (příklad: počáteční datum, koncové datum). To je jak neefektivní, tak i náročné na údržbu.

Postgre sestavil typy rozsahů následovně

  • int4range — Zobrazení rozsahu celého čísla
  • int8range — Zobrazení rozsahu bigint
  • číselný rozsah — Zobrazuje číselný rozsah
  • tstrange — Pomáhá zobrazit časové razítko bez časového pásma
  • podivné — Umožňuje zobrazit časové razítko s časovým pásmem
  • rozsah dat — Rozsah data

Typ UUID

Universally Unique Identities (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 se zapisuje jako skupina malých hexadecimálních číslic s různými skupinami oddělenými pomlčkami.

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

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre také přijímá alternativní formy vstupů UUID, jako jsou všechna velká písmena, žádné pomlčky, složené závorky atd.

Typ XML

PostgreSQL umožňuje ukládat XML data v datovém typu, ale nejde o nic jiného než o rozšíření textového datového typu. Výhodou ale je, že kontroluje, zda je vstupní XML správně naformátováno.

Příklad

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

Typ JSON

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

  1. JSON
  2. JSONB
json Jsonb
Jednoduché rozšíření textového datového typu s ověřením JSON Binární reprezentace dat JSON
Vkládání je rychlé, ale načítání dat je relativně pomalé. Vkládání 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ší.
Přepracování při získávání dat Při získávání dat není vyžadováno opětovné zpracování

Nejpoužívanější datový typ JSON používal nás jsonb, pokud neexistuje nějaká specializovaná potřeba použít datový typ JSON.

Příklad

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);

INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}'); 

Pseudotypy

PostgreSQL má mnoho položek pro speciální účely, které se nazývají pseudotypy. Nemůžete používat pseudotypy jako PostgreSQL typy sloupců. Používají se k deklaraci nebo funkci argumentu nebo návratového typu.

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

Jméno Description
Žádný Funkce přijímá všechny typy vstupních dat.
Pole Funkce přijímá libovolný datový typ pole.
Jakýkoli prvek Funkce přijímá libovolný datový typ.
Jakýkoli výčet Funkce přijímá libovolný datový typ výčtu.
Nonarray Funkce přijímá jakýkoli datový typ, který není v poli.
Cstring Funkce přijímá nebo vrací C řetězec ukončený nulou.
Interní Interní funkce přijímá nebo vrací interní datový typ serveru.
Language_handler Je deklarováno jako návratová obsluha jazyka.
Záznam Najděte funkci, která vrací nespecifikovaný typ řádku.
spoušť Spouštěcí funkce se používá k návratu spouště.

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

Doporučené postupy používání datových typů

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

Shrnutí

  • 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 pohyblivou řádovou čá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í PostgreSQL datové struktury jsou navrženy tak, aby podporovaly fulltextové vyhledávání
  • Date/Time PSQL datové typy umožňují informace o datu a čase v různých formátech
  • Booleovské typy polí Postgres mohou obsahovat tři hodnoty 1. True 2. False 3. Null
  • Geometrický PostgreSQL datové typy představují dvourozměrné prostorové objekty
  • Výčtové typy dat v PostgreSQL je užitečný pro reprezentaci zřídka se měnících informací, jako je kód země nebo id pobočky
  • Universally Unique Identities (UUID) je 128bitové množství, které je generováno algoritmem
  • PostgreSQL má mnoho položek pro speciální účely, které se nazývají pseudotypy
  • Pokud nechcete omezit vstup, je nejlepší používat datový typ „text“.