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
- Úspora úložného prostoru
- Kontrola chyb vstupu
- 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
- JSON
- 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