PostgreSQL ponúka používateľom bohatú sadu natívnych dátových typov. Používatelia môžu pridávať nové typy pomocou príkazu CREATE TYPE. Vďaka tomu sú dotazy tiež jednoduchšie a čitateľnejšie.
Dátové typy v PostgreSQL
PostgreSQL podporuje nasledujúce dátové typy:
- Typy textu
- Číselné typy
- Dátumy a časy
- XML
- JSON
- Boolovský
- Bity
- Binárne údaje
- Sieť
- Polia
- Vytvorte svoj dátový typ
- Boolovský
- Dočasný
- UUID
- Pole
- JSON
- Špeciálne dátové typy na ukladanie sieťovej adresy a geometrických údajov.
Poďme si podrobne preštudovať dátové typy PostgreSQL
- Charakterové dátové typy
- Číselné datové typy
- Binárne dátové typy
- Typ sieťovej adresy
- Typ textového vyhľadávania
- Dátové typy dátumu a času
- Boolovský typ
- Typy geometrických údajov
- Vymenované typy
- Typ rozsahu
- Typ UUID
- Typ XML
- Typ JSON
- Pseudotypy
Charakterové dátové typy
PostgreSQL podporuje dátové typy znakov na ukladanie textových hodnôt. PostgreSQL stavia dátové typy znakov z rovnakých vnútorných štruktúr. PostgreSQL ponúka tri znakové dátové typy: CHAR (n), VARCHAR (n) a TEXT.
názov | Popis |
---|---|
varchar (n) | Umožňuje deklarovať premennú dĺžku s obmedzením |
Char (n) | Pevná dĺžka, prázdne polstrované |
Text | Pomocou tohto typu údajov je možné deklarovať premennú s neobmedzenou dĺžkou |
Číselné datové typy
PostgreSQL podporuje dva odlišné typy čísel:
- Celé čísla
- Čísla s pohyblivou rádovou čiarkou
názov | Veľkosť obchodu | Rozsah |
---|---|---|
smallint | 2 bajty | -32768 až +32767 |
celé číslo | 4 bajty | -2147483648 až +2147483647 |
bigint | 8 bajtov | -9223372036854775808 až 9223372036854775807 |
desatinný | premenná | Ak ste to deklarovali ako desatinné číslo, typ dátového typu sa pohybuje od 13 1072 číslic pred desatinnou čiarkou do 16 383 číslic za desatinnou čiarkou |
číselný | premenná | Ak ho deklarujete ako číslo, môžete do neho pridať číslo až 131072 číslic pred desatinnou čiarkou a 16383 číslic za desatinnou čiarkou. |
reálny | 4 bajty | Presnosť na 6 desatinných číslic |
dvojitý | 8 bajtov | Presnosť na 15 desatinných miest |
Binárne dátové typy
Binárny reťazec je postupnosť oktetov alebo bajtov. Binárne dátové typy Postgres sú rozdelené dvoma spôsobmi.
- Binárne reťazce umožňujú ukladanie kurzov s nulovou hodnotou
- Netlačiteľné oktety
Reťazce znakov nepovoľujú nula oktetov a tiež zakazujú akékoľvek ďalšie oktetové hodnoty a sekvencie, ktoré sú neplatné podľa pravidiel kódovania znakových sád databázy.
názov | Veľkosť úložiska | Popis |
---|---|---|
Byte | 1 až 4 bajty plus veľkosť binárneho reťazca | Binárny reťazec s premennou dĺžkou |
Typ sieťovej adresy
Mnoho aplikácií ukladá sieťové informácie, ako je IP adresa používateľov alebo
senzory. PostgreSQL má tri natívne typy, ktoré vám pomôžu optimalizovať sieťové dáta.
názov | Veľkosť | Popis |
---|---|---|
cider | 7 alebo 19 bye | Siete IPV4 a IPv6 |
Inet | 7 alebo 19 bajtov | Hostiteľ a siete IPV4 a IPV5 |
makaddr | 6 bajtov | MAC adresy |
Používanie typov sieťových adries má nasledujúce výhody
- Úspora úložného priestoru
- Kontrola chyby vstupu
- Funkcie ako vyhľadávanie údajov podľa podsiete
Typ textového vyhľadávania
PostgreSQL poskytuje dva dátové typy, ktoré sú navrhnuté tak, aby podporovali fulltextové vyhľadávanie. Fulltextové vyhľadávanie je prehľadávanie zbierky dokumentov v prírodnom jazyku, ktoré vyhľadáva tie, ktoré sa najlepšie zhodujú s dotazom.
- Textové vyhľadávanie Tsvector Typy premenných PostgreSQL predstavujú dokument vo forme optimalizovanej pre textové vyhľadávanie
- Textové vyhľadávanie typu dotazu ukladá kľúčové slová, ktoré je potrebné vyhľadať
Dátové typy dátumu a času
Časová pečiatka PostgreSQL ponúka namiesto druhej presnosti mikrosekundovú presnosť. Okrem toho máte tiež možnosť ukladania s časovým pásmom alebo bez neho. PostgreSQL pri vstupe prevedie časovú pečiatku s časovým pásmom na UTC a uloží ju.
Zadanie dátumu a času je akceptované v rôznych formátoch vrátane tradičných Postgres, ISO 8601. Kompatibilné s SQL atď.
PostgreSQL podporuje objednávanie podľa dňa / mesiaca / roka. Podporované formáty sú DMY, MDY, YMD
Časové typy údajov
názov | Veľkosť | Rozsah | Rozhodnutie |
---|---|---|---|
Časová pečiatka bez časového pásma | 8 bajtov | 4713 pred Kr. Do 294 276 po Kr | 1 mikrosekunda / 14 číslic |
Časová pečiatka s časovým pásmom | 8 bajtov | 4713 pred Kr. Do 294 276 po Kr | 1 mikrosekunda / 14 číslic |
dátum | 4 bajty | 4713 pred Kr. Do 294 276 po Kr | Jeden deň |
Čas bez časového pásma | 8 bajtov | 00:00:00 až 24:00:00 | 1 mikrosekunda / 14 číslic |
Čas s časovým pásmom | 12 bajtov | 00:00:00 + 1459 až 24: 00: 00-1459 | 1 mikrosekunda / 14 číslic |
Interval | 12 bajtov | -178000000 až 178000000 rokov | 1 mikrosekunda / 14 číslic |
Príklady:
Vstup | Popis |
---|---|
2025-09-07 | ISO 8601, 7. september s akýmkoľvek štýlom dátumu (odporúčaný formát) |
7. septembra 2025 | 7. september s akýmkoľvek štýlom dátumu |
7.92525 | 7. september s MDY, 9. júl s DMY |
7.9.25 | 7. septembra 2025, s MDY |
2025 - 7. september | 7. september s akýmkoľvek štýlom dátumu |
7. september 2018 | 7. september s akýmkoľvek štýlom dátumu |
7. septembra - 25 | 7. septembra 2025, s YMD |
20250907 | ISO 8601,7 sept. 20225 v ľubovoľnom režime |
2025,250 | rok a deň v roku, v tomto prípade 7. september 2025 |
J25250 | Juliánske rande |
Čas / čas so zadaním časového pásma
Vstup | Popis |
---|---|
11: 19: 38,507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Rovnaké ako 11:19 |
23:19 | rovnako ako 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, rovnaké ako 23:19 EST |
23:19 EST | časové pásmo určené ako EST, rovnaké ako 23:19 EST |
Boolovský typ
Boolovský dátový typ môže obsahovať
- Pravdaže
- Falošné
- nulový
hodnoty.
Na deklaráciu stĺpca s boolovským údajovým typom použijete bool alebo boolean kľúčové slovo.
Keď vložíte hodnoty do boolovského stĺpca, Postgre prevedie hodnoty ako
- Áno
- r
- 1
- t
- pravda
do 1.
Zatiaľ čo hodnoty ako
- Nie
- N
- 0
- F
- Falošné
sa prevedú na 0
Pri výbere údajov sa hodnoty znova prevedú späť na áno, true, y atď.
Typy geometrických údajov
Geometrické dátové typy predstavujú dvojrozmerné priestorové objekty. Pomáhajú vykonávať operácie ako rotácie, zmena mierky, preklad atď.
názov | Veľkosť úložiska | Zastúpenie | Popis |
---|---|---|---|
Bod | 16 bajtov | Namierte na rovinu | (x, y) |
Riadok | 32 bajtov | Nekonečná čiara | ((xl.yl). (x2.y2)) |
Lseg | 32 bajtov | Segment konečnej čiary | ((xl.yl). (x2.y2)) |
Krabica | 32 bajtov | Obdĺžniková krabica | ((xl.yl). (x2.y2)) |
Cesta | 16 n + 16 n bajtov | Zatvoriť a otvoriť cestu | ((xl.yl), ...) |
Polygón | 40 + 16 n bajtov | Polygón | [(xl.yl)….] |
Kruh | 24 bajtov | Kruh | <(xy) .r> (stredový bod a polomer) |
Vymenované typy
Vymenovaný dátový typ PostgreSQL je užitočný na reprezentáciu zriedka sa meniacich informácií, ako je kód krajiny alebo ID pobočky. Typ údajov Enumerated je uvedený v tabuľke s cudzími kľúčmi, aby sa zaistila integrita údajov.
Príklad:
Farba vlasov je v demografickej databáze pomerne statická
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Typ rozsahu
Mnoho podnikových aplikácií vyžaduje údaje v rozsahu. Spravidla sú definované dva stĺpce (príklad: dátum začatia, dátum ukončenia), ktoré sa zaoberajú rozsahmi. Je to neefektívne aj náročné na údržbu.
Postgre postavil typy radov nasledovne
- int4range - Zobrazenie rozsahu celého čísla
- int8range - Zobraziť rozsah bigintu
- numrange - Zobrazuje číselný rozsah
- tstrange - Pomôže vám zobraziť časovú pečiatku bez časového pásma
- divné - umožňuje zobraziť časovú pečiatku s časovým pásmom
- rozsah dátumov - rozsah dátumov
Typ UUID
Universally Unique Identifies (UUID) je 128-bitová veličina, ktorá je generovaná algoritmom. Je veľmi nepravdepodobné, že rovnaký identifikátor vygeneruje iná osoba na svete pomocou rovnakého algoritmu. Preto sú pre distribuované systémy tieto identifikátory ideálnou voľbou, pretože ponúkajú jedinečnosť v jednej databáze. UUID sa píše ako skupina malých šestnástkových číslic, pričom rôzne skupiny sú oddelené spojovníkmi.
PostgreSQL má natívny dátový typ UUID, ktorý spotrebuje 16 bajtov úložiska ... UUID je ideálny dátový typ pre primárne kľúče.
Príklad:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre tiež akceptuje alternatívne formy vstupov UUID, ako sú všetky veľké písmená, žiadne pomlčky, zátvorky atď.
Typ XML
PostgreSQL vám umožňuje ukladať údaje XML v dátovom type, ale nejde o nič iné ako rozšírenie o textový dátový typ. Výhodou však je, že kontroluje, či je vstupný XML správne vytvorený.
Príklad:
XMLPARSE (DOCUMENT '') Data Type …
Typ JSON
Na ukladanie údajov JSON ponúka PostgreSQL 2 dátové typy
- JSON
- JSONB
json | Jsonb |
---|---|
Jednoduché rozšírenie textového dátového typu s validáciou JSON | Binárna reprezentácia údajov JSON |
Vloženie je rýchle, ale načítanie údajov pomerne pomalé. | Vloženie je pomalé, ale vyberte (načítanie údajov je rýchle) |
Ukladá zadané údaje presne tak, ako sú vrátane medzier. | Podporuje indexovanie. Môže optimalizovať medzery, aby sa vyhľadávanie urýchlilo. |
Spracovanie pri načítaní údajov | Pri načítaní údajov sa nevyžaduje opätovné spracovanie |
Najbežnejšie používaný dátový typ JSON nás používal jsonb, pokiaľ neexistuje špeciálna potreba použiť dátový typ JSON.
Prí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á veľa položiek na špeciálne účely, ktoré sa nazývajú pseudotypy. Ako typy stĺpcov PostgreSQL nemôžete používať pseudotypy. Používajú sa na vyhlásenie alebo argument funkcie alebo návratový typ.
Každý z dostupných pseudotypov je užitočný v situáciách, keď dokumenty o chovaní funkcie nezodpovedajú jednoduchému prevzatiu alebo vráteniu hodnoty konkrétneho dátového typu SQL.
názov | Popis |
---|---|
akýkoľvek | Funkcia prijíma všetky vstupné dátové typy. |
Pole | Funkcia prijíma akýkoľvek dátový typ poľa. |
Ľubovoľný prvok | Funkcia akceptuje akýkoľvek dátový typ. |
Akékoľvek enum | Funkcia akceptuje akýkoľvek dátový typ enum. |
Nonarray | Funkcia prijíma akýkoľvek dátový typ bez poľa. |
Cstring | Funkcia prijíma alebo vracia reťazec C zakončený nulou. |
Interné | Interná funkcia prijíma alebo vracia interný dátový typ servera. |
Obsluha jazyka | Deklaruje sa návratová obsluha jazyka. |
Záznam | Nájdite funkciu, ktorá vráti neurčený typ riadku. |
Spúšťač | Na návrat spúšte sa používa funkcia spúšťača. |
Je dôležité, aby sa užívateľ, ktorý používa túto funkciu, ubezpečil, že sa funkcia bude správať bezpečne, keď sa ako typ argumentu použije pseudo-typ.
Najlepšie postupy pri používaní dátových typov
- Ak nechcete obmedziť vstup, použite dátový typ „text“
- Nikdy nepoužívajte znak „char“.
- Celé čísla používajú „int.“ Bigint používajte iba vtedy, keď máte skutočne veľké čísla
- „Číselné“ používajte takmer vždy
- Ak máte zdroj údajov IEEE 754, použite float v PostgreSQL
Zhrnutie
- PostgreSQL ponúka používateľom bohatú sadu natívnych dátových typov
- PostgreSQL podporuje dátové typy znakov na ukladanie textových hodnôt
- PostgreSQL podporuje dva odlišné typy čísel: 1. Celé čísla, 2. Čísla s pohyblivou rádovou čiarkou
- Binárny reťazec je postupnosť bajtov alebo oktetov
- PostgreSQL má typ sieťovej adresy, ktorý vám pomôže optimalizovať ukladanie sieťových údajov
- Textové vyhľadávanie Dátové štruktúry PostgreSQL sú navrhnuté tak, aby podporovali fulltextové vyhľadávanie
- Dátum / čas Dátové typy PSQL umožňujú informácie o dátume a čase v rôznych formátoch
- Typy polí Boolean Postgres môžu obsahovať tri hodnoty 1. True 2. False 3. Null
- Geometrické dátové typy PostgreSQL predstavujú dvojrozmerné priestorové objekty
- Vymenované dátové typy v PostgreSQL sú užitočné na vyjadrenie zriedka sa meniacich informácií, ako je kód krajiny alebo ID pobočky
- Universally Unique Identifies (UUID) je 128-bitová veličina, ktorá je generovaná algoritmom
- PostgreSQL má veľa položiek na špeciálne účely, ktoré sa nazývajú pseudotypy
- Najlepšie je používať „textový“ dátový typ, pokiaľ nechcete obmedziť vstup