Datové typy PostgreSQL: Znak - Numerické - Binární - Booleovský

Obsah:

Anonim

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ší.

Datové typy v PostgreSQL

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

  • Typy textu
  • Numerické typy
  • Data a časy
  • XML
  • JSON
  • Booleovský
  • Bity
  • Binární data
  • Síť
  • Pole
  • Vytvořte svůj datový typ
  • Booleovský
  • Temporální
  • 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 znaků
  • Numerické datové typy
  • Binární datové typy
  • Typ síťové adresy
  • Typ textového vyhledávání
  • Datové typy datum / čas
  • Booleovský typ
  • Typy geometrických dat
  • Výčet typů
  • Typ rozsahu
  • Typ UUID
  • Typ XML
  • Typ JSON
  • Pseudotypy

Datové typy znaků

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

název Popis
varchar (n) Umožňuje deklarovat proměnnou délku s omezením
Char (n) Pevná délka, prázdné polstrované
Text Pomocí lze tento datový typ použít k deklaraci proměnné s neomezenou délkou

Numerické datové typy

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

  • Celá čísla
  • Čísla s plovoucí desetinnou čárkou
název Velikost obchodu Rozsah
smallint 2 bajty -32768 až +32767
celé číslo 4 byty -2147483648 až +2147483647
bigint 8 bytů -9223372036854775808 až 9223372036854775807
desetinný proměnná Pokud jste jej deklarovali jako desetinný datový typ, pohybuje se rozsah od 131072 číslic před desetinnou čárkou do 16383 číslic za desetinnou čárkou
číselný proměnná Pokud jej deklarujete jako číslo, můžete zadat číslo až 131072 číslic před desetinnou čárkou na 16383 číslic za desetinnou čárkou
nemovitý 4 byty Přesnost na 6 desetinných míst
dvojnásobek 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í ukládání kurzů s nulovou hodnotou
  • Netisknutelné oktety

Řetězce znaků neumožňují nula oktetů a také zakazují jakékoli další hodnoty a sekvence oktetů, které jsou neplatné podle pravidel kódování znakové sady databáze.

název Velikost úložiště Popis
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 je IP adresa uživatelů nebo

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

název Velikost Popis
jablečný mošt 7 nebo 19 bye Sítě IPV4 a IPv6
Inet 7 nebo 19 bajtů Hostitel a sítě IPV4 a IPV5
macaddr 6 bytů MAC adresy

Používání 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 textového vyhledávání

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 datum / čas

Č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 něj. PostgreSQL při vstupu převede časové razítko s časovým pásmem na UTC a uloží jej.

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

PostgreSQL podporuje objednávání podle dne / měsíce / roku. Podporované formáty jsou DMY, MDY, YMD

Časové datové typy

název Velikost Rozsah Rozlišení
Časové razítko bez časového pásma 8 bytů 4713 př. N. L. Až 294 276 n. L 1 mikrosekundu / 14 číslic
Časové razítko s časovým pásmem 8 bytů 4713 př. N. L. Až 294 276 n. L 1 mikrosekundu / 14 číslic
datum 4 byty 4713 př. N. L. Až 294 276 n. L Jednoho dne
Čas bez časového pásma 8 bytů 00:00:00 až 24:00:00 1 mikrosekundu / 14 číslic
Čas s časovým pásmem 12 bytů 00:00:00 + 1459 až 24: 00: 00-1459 1 mikrosekundu / 14 číslic
Interval 12 bytů -178000000 až 178000000 let 1 mikrosekundu / 14 číslic

Příklady:

Vstup Popis
2025-09-07 ISO 8601, 7. září s jakýmkoli stylem data (doporučený formát)
7. září 2025 7. září s jakýmkoli stylem data
7. 9. 2525 7. září s MDY, 9. července s DMY
7. 9. 25 7. září 2025, s MDY
2025-září-7 7. září s jakýmkoli stylem data
7. září 2018 7. září s jakýmkoli stylem data
7. září-25 7. září 2025, s YMD
20250907 ISO 8601,7 září 20225 v libovolném režimu
2025,250 rok a den roku, v tomto případě 7. září 2025
J25250 Juliánské rande

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

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

Booleovský typ

Logický datový typ může obsahovat

  • Skutečný
  • Nepravdivé
  • nula

hodnoty.

Pomocí bool nebo boolean klíčového slova deklarujete sloupec s booleovským datovým typem.

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

  • Ano
  • y
  • 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 jsou hodnoty opět převedeny zpět na yes, true, y atd.

Typy geometrických dat

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

název Velikost úložiště Zastoupení Popis
Směřovat 16 bytů Namiřte na letadlo (x, y)
Čára 32 bytů Nekonečná čára ((xl.yl). (x2.y2))
Lseg 32 bytů Segment konečných čar ((xl.yl). (x2.y2))
Box 32 bytů Obdélníková krabička ((xl.yl). (x2.y2))
Cesta 16 n + 16 n bajtů Zavřít a otevřít cestu ((xl.yl),…)
Polygon 40 + 16 n bajtů Polygon [(xl.yl)….]
Kruh 24 bytů Kruh <(xy) .r> (střed a poloměr)

Výčet typů

Vymenovaný datový typ PostgreSQL je užitečný pro reprezentaci zřídka se měnících informací, jako je kód země nebo ID pobočky. Enumerovaný datový typ 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')

Typ rozsahu

Mnoho podnikových aplikací vyžaduje data v rozsahu. Obvykle jsou definovány dva sloupce (příklad: počáteční datum, konečné datum), které se zabývají rozsahy. To je neúčinné a obtížně udržovatelné.

Postgre vytvořil následující typy rozsahů

  • int4range - Zobrazit rozsah celého čísla
  • int8range - Zobrazit 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é množství generované algoritmem. Je velmi nepravděpodobné, že stejný identifikátor vygeneruje jiná osoba na světě pomocí stejného algoritmu. To je důvod, proč 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 pomlčkami.

PostgreSQL má nativní datový typ UUID, který spotřebovává 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šechny velká písmena, žádné pomlčky, závorky atd.

Typ XML

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

Příklad:

XMLPARSE (DOCUMENT 'Data Type')

Typ JSON

Pro ukládání dat JSON nabízí PostgreSQL 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
Vložení je rychlé, ale načítání dat relativně pomalé. Vkládání je pomalé, ale vyberte (načítání dat je rychlé)
Uloží zadaná data přesně tak, jak jsou, včetně mezer. Podporuje indexování. Může optimalizovat mezery, aby bylo vyhledávání rychlejší.
Přepracování při načítání dat Při načítání dat není nutné opětovné zpracování

Nejčastěji používaný datový typ JSON používal nás jsonb, pokud není 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. Jako typy sloupců PostgreSQL nemůžete použít pseudo-typy. Používají se k deklaraci nebo funkci argumentu 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ázev Popis
Žádný Funkce přijímá všechny vstupní datové typy.
Pole Funkce přijímá jakýkoli datový typ pole.
Libovolný prvek Funkce přijímá jakýkoli datový typ.
Jakékoli výčet Funkce přijímá jakýkoli datový typ výčtu.
Nonarray Funkce přijímá jakýkoli datový typ mimo pole.
Cstring Funkce přijímá nebo vrací řetězec C zakončený nulou.
Vnitřní Interní funkce přijímá nebo vrací interní datový typ serveru.
Language_handler Je deklarováno, že vrátí obslužnou rutinu jazyka.
Záznam Najděte funkci, která vrací neurčený typ řádku.
Spoušť Funkce spouště se používá k vrácení spouště.

Je důležité, aby uživatel, který používá tuto funkci, musel zajistit, aby se funkce chovala bezpečně, když se jako typ argumentu použije pseudo-typ.

Osvědčené postupy při 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 v případě, že máte opravdu velká čísla
  • „Číselné“ používejte téměř vždy
  • Pokud máte zdroj dat IEEE 754, použijte float v PostgreSQL

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 úložiště 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
  • Typy polí Boolean Postgres mohou obsahovat tři hodnoty 1. True 2. False 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é množství generované algoritmem
  • PostgreSQL má mnoho položek pro speciální účely, které se nazývají pseudotypy
  • Doporučuje se používat „textový“ datový typ, pokud nechcete omezit vstup