GNU/Linux >> Znalost Linux >  >> Ubuntu

Datové typy PostgreSQL

Úvod

PostgreSQL je open-source systém pro správu relačních databází známý svou robustností a rozšiřitelností. To také znamená, že PostgreSQL nabízí uživatelům různé typy dat.

V tomto tutoriálu se budeme zabývat různými vestavěnými datovými typy dostupnými v PostgreSQL.

Datové typy PostgreSQL

Při vytváření tabulky v PostgreSQL můžete určit datový typ pro každý sloupec. PostgreSQL podporuje širokou škálu vestavěných datových typů:

Postava

PostgreSQL používá znakové datové typy pro ukládání textových hodnot. V PostgreSQL jsou tři typy znakových dat:

Název Popis
znak(n), znak(n) Řetězce s pevnou délkou, kde n je počet znaků. Prázdné místo vpravo vyplněné tak, aby se rovnalo n .
proměnlivé znaky(n), varchar(n) Řetězec s proměnnou délkou s omezením počtu znaků, kde n je počet znaků.
text Proměnná délka, neomezený řetězec.

Číselné typy

Číselné datové typy zahrnout:

  • Dvou-, čtyř- a osmibajtová celá čísla
  • Čtyř- a osmibajtová čísla s plovoucí desetinnou čárkou
  • Volitelná desetinná místa:
Název Velikost úložiště Popis Rozsah
mallint 2 bajty Celé číslo malého rozsahu. -32768 až +32767
celé číslo 4 bajty Celé číslo středního rozsahu. -2147483648 až +2147483647
velký 8 bajtů Celé číslo velkého rozsahu. -9223372036854775808 až 9223372036854775807
desítkové proměnná Přesné desetinné číslo zadané uživatelem. Až 131072 číslic před desetinnou čárkou. Až 16383 číslic za desetinnou čárkou
numerické proměnná Přesné desetinné číslo zadané uživatelem. až 131072 číslic před desetinnou čárkou. Až 16383 číslic za desetinnou čárkou
skutečné 4 bajty Proměnná přesnost v desítkové soustavě. Přesnost na 6 desetinných míst
dvojitá přesnost 8 bajtů Proměnná přesnost v desítkové soustavě. Přesnost na 15 desetinných míst
malý seriál 2 bajty Malé autoinkrementující celé číslo. 1 až 32767
sériový 4 bajty Střední autoinkrementující celé číslo. 1 až 2147483647
velký seriál 8 bajtů Velké autoinkrementační celé číslo. 1 až 9223372036854775807

Peněžní

Typ peněžních dat ukládá číselnou částku peněz s pevnou zlomkovou přesností. Tento typ ukládá až 8 bajtů dat s rozsahem -92233720368547758,08 až +92233720368547758,07 a používá numerické , celé číslo a velký datové typy jako hodnoty.

Datum/čas

PostgreSQL Podporuje všechny standardní SQL datové typy dat a času , s rozlišením 1 mikrosekunda nebo 14 číslic. Datum je jedinou výjimkou, s rozlišením jednoho dne, počítáno podle gregoriánského kalendáře:

Název Velikost úložiště Popis Rozsah
časové razítko 8 bajtů Datum a čas, bez časového pásma. 4713 př.nl až 294276 nl
časové razítko 8 bajtů Datum a čas s časovým pásmem. 4713 př.nl až 294276 nl
datum 4 bajty Datum. 4713 př.nl až 294276 nl
čas bez časového pásma 8 bajtů Čas dne, bez časového pásma. 00:00:00 až 24:00:00
čas s časovým pásmem 12 bajtů Čas dne s časovým pásmem. 00:00:00 + 1459 až 24:00:00-1459
interval 12 bajtů Časový interval. -178000000 až 178000000 let

Binární

PostgreSQL může uložit binární řetězce proměnné délky jako bytea datový typ , přičemž 1 nebo 4 bajty plus velikost skutečného binárního řetězce.

Booleovská hodnota

Booleovský datový typ je deklarován pomocí bool nebo boolean klíčová slova. Může obsahovat true (1) , false (0) nebo neznámé (null) hodnoty.

Výčet

Výčet typů dat sestávají ze statické, uspořádané sady hodnot, jako jsou čísla od 1 do 10 nebo měsíce v roce. Na rozdíl od jiných datových typů můžete vytvořit výčtové typy pomocí create type příkaz:

CREATE TYPE year AS ENUM ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

Bitový řetězec

Typ bitového řetězce ukládá řetězce 1 a 0, které se používají k ukládání nebo vizualizaci bitových masek:

Název Popis
bit(n) Ukládá bitový řetězec s pevnou délkou n znaky.
různé(n) Ukládá bitový řetězec různé délky až do n znaky.

UUID

UUID (Universally Unique Identifiers) je sada 32 číslic vytvořená algoritmem. Skládá se z několika skupin po čtyřech, osmi a dvanácti číslicích oddělených pomlčkami:

Síťová adresa

PostgreSQL používá typy dat síťových adres pro ukládání adres IPv4, IPv6 a MAC:

Název Velikost úložiště Popis
cidr 7 nebo 19 bajtů Ukládá sítě IPv4 a IPv6.
inet 7 nebo 19 bajtů Ukládá hostitele a sítě IPv4 a IPv6.
macaddr 6 bajtů Ukládá adresy MAC.

Použití datových typů síťových adres má několik výhod oproti použití prostého textu. To zahrnuje úsporu úložného prostoru, specializované funkce a příkazy a snazší kontrolu chyb.

Vyhledávání textu

Datový typ vyhledávání textu umožňuje vyhledat nejlepší shodu ve sbírce dokumentů v přirozeném jazyce:

Název Popis
tsvector Představuje dokument optimalizovaný pro textové vyhledávání se seznamem různých slov normalizovaných tak, aby sloučily různé varianty stejného slova (lexémy).
tsquery Ukládá klíčová slova, která je třeba hledat, a kombinuje je pomocí booleovských operátorů (AND, OR a NOT).

Geometrické

Typy geometrických dat představují prostorové objekty vykreslené ve dvou rozměrech, jako jsou body, čáry a polygony:

Název Velikost úložiště Zastoupení Číselný popis
bod 16 bajtů Ukažte na rovině. (x,y)
řádek 32 bajtů Nekonečná čára. ((x1,y1),(x2,y2))
lseg 32 bajtů Konečný segment čáry. ((x1,y1),(x2,y2))
box 32 bajtů Obdélníkový rámeček. ((x1,y1),(x2,y2))
cesta 16+16n bajtů Otevřená nebo uzavřená cesta. ((x1,y1),...(xn,yn))
polygon 40+16n bajtů Mnohoúhelník. ((x1,y1),...(xn,yn))
kruh 24 bajtů Kruh. ((x,y),r) (středový bod a poloměr)

XML

PostgreSQL umožňuje ukládat data XML jako datový typ XML pomocí XMLPARSE funkce:

XMLPARSE (DOCUMENT [document name] WELLFORMED)

nebo:

XMLPARSE (CONTENT [XML content] WELLFORMED)

Kde:

  • [document name] :Dokument XML s jedním kořenem.
  • [XML content] :Platná hodnota XML
  • WELLFORMED :Tato možnost zaručuje, že [název dokumentu] nebo [obsah XML] se převede na správně vytvořený dokument XML. Použijte jej pouze v případě, že nechcete, aby databáze kontrolovala, zda je vstup správně vytvořen.

JSON

PostgreSQL nabízí dva datové typy JSON :

  • json: Rozšíření textového datového typu s ověřením JSON. Tento datový typ ukládá data přesně tak, jak jsou (včetně mezer). Můžete jej rychle vložit do databáze, ale jeho načtení je relativně pomalé kvůli opětovnému zpracování.
  • jsonb: Představuje data JSON v binárním formátu. Pomalejší vkládání do databáze, ale podpora indexování a nedostatek přepracování výrazně zrychlují načítání.

Pole

Datový typ pole umožňuje definovat sloupec tabulky jako vícerozměrné pole, které může používat jakýkoli základní, výčtový nebo složený datový typ. Pole můžete deklarovat, upravovat a prohledávat jako kterýkoli jiný sloupec v databázi.

Kompozitní

Složené datové typy umožňují použít řádek nebo záznam tabulky jako datový prvek. Podobně jako u datových typů polí můžete také deklarovat, vyhledávat a upravovat složené hodnoty.

Rozsah

Datové typy rozsahu používat diskrétní nebo spojité rozsahy jiných datových typů. Mezi vestavěné datové typy rozsahu patří:

Název Popis
int4range Rozsah středně velkých celých čísel.
int8range Rozsah velkých celých čísel.
numrange Rozsah uživatelem zadaných přesných desetinných míst.
zvláštní Rozsah časů a dat bez časového pásma.
tstzrange Rozsah časů a dat s časovým pásmem.
rozsah dat Rozsah dat.

Můžete také vytvořit vlastní typy rozsahů pomocí jiných datových typů jako základu.

Identifikátor objektu

PostgreSQL používá identifikátory objektů jako systémy primárního klíče při provádění specializovaných vstupních a výstupních operací:

Název Odkazy Popis
oid jakýkoli Číselný identifikátor objektu.
regproc pg_proc Název funkce.
regprocedura pg_proc Funkce s typy argumentů.
regoper pg_operator Jméno operátora.
regoperátor pg_operator Operátor s typy argumentů.
regclass pg_class Název vztahu.
regtype pg_type Název typu dat.
regconfig pg_ts_config Konfigurace textového vyhledávání.
regdictionary pg_ts_dict Slovník pro vyhledávání textu.

Pseudotypy

Pseudotypy jsou sbírkou speciálních položek pro deklarování argumentu funkce nebo typu výsledku:

Název Popis
jakýkoli Funkce přijímá jakýkoli typ vstupních dat.
jakýkoli prvek Funkce přijímá jakýkoli typ dat.
anyarray Funkce přijímá libovolný datový typ pole.
anynonarray Funkce přijímá jakýkoli typ dat, který není v poli.
anyenum Funkce přijímá jakýkoli výčtový typ dat.
jakýkoli Funkce přijímá libovolný datový typ rozsahu.
cstring Funkce přijímá nebo vrací řetězec C zakončený nulou.
interní Funkce přijímá nebo vrací interní datový typ serveru.
language_handler Funkce vrací obslužný program jazyka.
fdw_handler Obslužný program obálky cizích dat vrací fdw_handler.
záznam Najde funkci, která vrátí nespecifikovaný typ řádku.
spouštěč Funkce spouštění vrací spouštěč.
neplatné Funkce nevrací žádnou hodnotu.

Ubuntu
  1. Jak nakonfigurovat postgresql poprvé?

  2. Zkopírujte n bajtů dat x do souboru

  3. Čas provedení více příkazů

  1. PostgreSQL vs MySQL:Podrobné srovnání

  2. Cassandra datové typy:vestavěné, shromažďované a definované uživatelem

  3. Typy databáze NoSQL

  1. Redis datové typy s příkazy:Komplexní průvodce

  2. Vysvětlení architektury datového skladu

  3. Co je Spark DataFrame?