PostgreSQL Vrste podataka: bajt, numerički, znakovni, binarni

PostgreSQL nudi bogat skup izvornih tipova podataka za korisnike. Korisnici mogu dodavati nove tipove uz pomoć naredbe CREATE TYPE. Također čini upite jednostavnijima i čitljivijima.

Vrste podataka u PostgreSQL

PostgreSQL podržava sljedeće vrste podataka:

  • Vrste teksta
  • Numerički tipovi
  • Datumi i vremena
  • XML
  • JSON
  • Booleova
  • bitovi
  • Binarni podaci
  • mreža
  • nizovi
  • Izradite svoju vrstu podataka
  • Booleova
  • privremen
  • UUID
  • Poredak
  • JSON
  • Posebni tipovi podataka za pohranu mrežne adrese i geometrijskih podataka.

Idemo učiti PostgreSQL vrste podataka u detalje

Znakovni tipovi podataka

PostgreSQL podržava karakterne tipove podataka za pohranu tekstualnih vrijednosti. PostgreSQL gradi znakovne tipove podataka od istih unutarnjih struktura. PostgreSQL nudi tri znakovna tipa podataka: CHAR(n), VARCHAR(n) i TEXT.

Ime Description
varchar(n) Omogućuje vam da deklarirate varijabilnu duljinu s ograničenjem
znak(n) Fiksne duljine, prazno podstavljene
Tekst Use može koristiti ovaj tip podataka za deklariranje varijable neograničene duljine

Numerički tipovi podataka

PostgreSQL podržava dvije različite vrste brojeva:

  • cijeli brojevi
  • Brojevi s pomičnim zarezom
Ime Veličina trgovine Raspon
smallint 2 bajtova -32768 do +32767
cijeli 4 bajtova -2147483648 do +2147483647
bigint 8 bajtova -9223372036854775808 da 9223372036854775807
decimal varijabla Ako ste ga deklarirali kao decimalni tip podataka u rasponu od 131072 znamenke prije decimalne točke do 16383 znamenke nakon decimalne točke
numerički varijabla Ako ga deklarirate kao broj, možete uključiti broj do 131072 znamenke prije decimalne točke do 16383 znamenke nakon decimalne točke
stvarne 4 bajtova Preciznost 6 decimalnih znamenki
dvostruko 8 bajtova Preciznost 15 decimalnih znamenki

Binarne vrste podataka

Binarni niz je niz okteta ili bajtova. Binarni Postgres tipovi podataka dijele se na dva načina.

  • Binarni nizovi omogućuju pohranjivanje vjerojatnosti vrijednosti nula
  • Okteti koji se ne mogu ispisati

Nizovi znakova ne dopuštaju nula okteta i također ne dopuštaju bilo koje druge vrijednosti okteta i nizove koji nisu valjani prema pravilima kodiranja skupa znakova baze podataka.

Ime Veličina spremišta Description
Bajt 1 do 4 bajta plus veličina binarnog niza Binarni niz promjenjive duljine

Vrsta mrežne adrese

Mnoge aplikacije pohranjuju podatke o mreži poput IP adresa korisnika ili senzora. PostgreSQL ima tri izvorne vrste koje vam pomažu optimizirati mrežne podatke.

Ime Veličina Description
jabukovača 7 ili 19 bajtova IPV4 i IPv6 mreže
inet 7 ili 19 bajtova IPV4 i IPV5 host i mreže
macaddr 6 bajtova MAC adrese

Korištenje vrsta mrežnih adresa ima sljedeće prednosti

  1. Ušteda prostora za pohranu
  2. Provjera pogrešaka pri unosu
  3. Funkcije poput pretraživanja podataka po podmreži

Vrsta pretraživanja teksta

PostgreSQL pruža dvije vrste podataka koji su dizajnirani za podršku pretraživanja cijelog teksta. Pretraživanje cijelog teksta je pretraživanje kroz zbirku dokumenata na prirodnom jeziku kako bi se pretražili oni koji najbolje odgovaraju upitu.

  • Pretraživanje teksta vektora PostgreSQL tipovi varijabli predstavljaju dokument u obliku optimiziranom za pretraživanje teksta
  • Tekstualno pretraživanje vrste upita pohranjuje ključne riječi koje je potrebno pretražiti

Tipovi podataka datum/vrijeme

PostgreSQL vremenska oznaka nudi mikrosekundnu preciznost umjesto sekundne preciznosti. Štoviše, također imate mogućnost pohranjivanja s vremenskom zonom ili bez nje. PostgreSQL pretvorit će vremensku oznaku s vremenskom zonom u UTC na ulazu i pohraniti je.

Unos datuma i vremena prihvaća se u različitim formatima, uključujući tradicionalni Postgres, ISO 8601. SQL kompatibilan itd.

PostgreSQL podržava naručivanje po danu/mjesecu/godini. Podržani formati su DMY, MDY, YMD

Vremenske vrste podataka

Ime Veličina Raspon Rezolucija
Vremenska oznaka bez vremenske zone 8 bajtova 4713. prije Krista do 294276. godine 1 mikrosekunda/14 znamenki
Vremenska oznaka s vremenskom zonom 8 bajtova 4713. prije Krista do 294276. godine 1 mikrosekunda/14 znamenki
podaci 4 bajtova 4713. prije Krista do 294276. godine Jednog dana
Vrijeme bez vremenske zone 8 bajtova 00:00:00 to 24:00:00 1 mikrosekunda/14 znamenki
Vrijeme s vremenskom zonom 12 bajtova 00:00:00 + 1459 do 24:00:00-1459 1 mikrosekunda/14 znamenki
Interval 12 bajtova -178000000 do 178000000 godina 1 mikrosekunda/14 znamenki

Primjeri

Ulazni Description
2025-09-07 ISO 8601, 7. rujna s bilo kojim stilom datuma (preporučeni format)
7. rujna 2025. 7. rujna s bilo kojim stilom datuma
9/7/2025 7. rujna s MDY, 9. srpnja s DMY
9/7/25 7. rujna 2025., s MDY
2025-rujan-7 7. rujna s bilo kojim stilom datuma
7. rujna 2018 7. rujna s bilo kojim stilom datuma
7-rujan-25 7. rujna 2025., s YMD
20250907 ISO 8601,7 ruj 20225 u bilo kojem načinu
2025.250 godina i dan u godini, u ovom slučaju 7. rujna 2025
J25250 Julijski sastanak

Vrijeme/ Vrijeme s unosom vremenske zone

Ulazni Description
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Isto kao 11:19
11: 19 PM isto kao 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, isto kao u 11:19 EST
23: 19 EST vremenska zona navedena kao EST, isto kao 11:19 EST

Booleov tip

Booleov tip podataka može sadržavati

  • Pravi
  • Lažan
  • nula

vrijednosti.

Koristite a bool or boolean ključna riječ za deklariranje stupca s Booleovim tipom podataka.

Kada umetnete vrijednosti u booleov stupac, Postgre pretvara vrijednosti poput

  • Da
  • y
  • 1
  • t
  • istinski

u 1.

Dok vrijednosti poput

  • Ne
  • N
  • 0
  • F
  • Lažan

pretvaraju se u 0

Prilikom odabira podataka, vrijednosti se ponovno pretvaraju u yes, true, y itd.

Geometrijski tipovi podataka

Geometrijski tipovi podataka predstavljaju dvodimenzionalne prostorne objekte. Pomažu u izvođenju operacija poput rotacije, skaliranja, prevođenja itd.

Ime Veličina spremišta Prikaz Description
Točka 16 bajtova Točka na ravnini (x,y)
Linija 32 bajtova Beskonačna linija ((xl.yl ).(x2.y2))
Lseg 32 bajtova Konačni segment ((xl.yl ).(x2.y2))
Box 32 bajtova Pravokutan Box ((xl.yl ).(x2.y2))
Put 16n + 16n bajtova Zatvorite i otvorite put ((xl.yl),…)
Poligon 40 + 16n bajtova Poligon [(xl.yl)….]
Krug 24 bajtova Krug <(xy).r> (središnja točka i polumjer)

Nabrojane vrste

Nabrojano PostgreSQL vrsta podataka korisna je za predstavljanje informacija koje se rijetko mijenjaju, kao što je kod zemlje ili ID podružnice. Tip podataka Enumerated predstavljen je u tablici sa stranim ključevima kako bi se osigurao integritet podataka.

Primjer

Boja kose prilično je statična u demografskoj bazi podataka

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

Nabrojane vrste

Vrsta dometa

Mnoge poslovne aplikacije zahtijevaju podatke u rasponima. Obično su dva stupca (primjer: datum početka, datum završetka) definirana za obradu raspona. To je i neučinkovito i teško za održavanje.

Postgre je izgradio tipove raspona na sljedeći način

  • int4range — Prikaz raspona cijelog broja
  • int8range — Prikaz raspona bigint
  • numrange — Prikazuje numerički raspon
  • tstrange — Pomaže vam prikazati vremensku oznaku bez vremenske zone
  • čudno — Omogućuje prikaz vremenske oznake s vremenskom zonom
  • datumski raspon — Raspon datuma

Vrsta UUID-a

Universally Unique Identifies (UUID) je 128-bitna veličina koju generira algoritam. Vrlo je mala vjerojatnost da će isti identifikator generirati druga osoba na svijetu koristeći isti algoritam. Zato su za distribuirane sustave ovi identifikatori idealan izbor jer nude jedinstvenost unutar jedne baze podataka. UUID se piše kao skupina malih heksadecimalnih znamenki, s različitim skupinama odvojenim crticama.

PostgreSQL ima izvorni tip podataka UUID koji zauzima 16 bajtova pohrane. UUID je idealan tip podataka za primarne ključeve.

Primjer

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre također prihvaća alternativne oblike unosa UUID-a kao što su sva velika slova, bez crtica, zagrada itd.

XML vrsta

PostgreSQL omogućuje pohranjivanje XML podataka u tip podataka, ali nije ništa više od proširenja tekstualnog tipa podataka. Ali prednost je u tome što provjerava je li ulazni XML dobro oblikovan.

Primjer

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

Vrsta JSON

Za pohranu JSON podataka PostgreSQL nudi 2 vrste podataka

  1. JSON
  2. JSONB
JSON Jsonb
Jednostavno proširenje tekstualnog tipa podataka s JSON provjerom valjanosti Binarna reprezentacija JSON podataka
Umetanje je brzo, ali je dohvaćanje podataka relativno sporo. Umetanje je sporo, ali odaberite (dohvaćanje podataka je brzo)
Sprema unesene podatke točno na način na koji uključuje razmak. Podržava indeksiranje. Može optimizirati razmak kako bi dohvaćanje bilo brže.
Ponovna obrada pri dohvaćanju podataka Nije potrebna ponovna obrada pri dohvaćanju podataka

Najčešće korišteni JSON tip podataka koristio nas je jsonb osim ako postoji posebna potreba za korištenjem JSON tipa podataka.

Primjer

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}'); 

Pseudo-tipovi

PostgreSQL ima mnogo unosa posebne namjene koji se nazivaju pseudo-tipovi. Ne možete koristiti pseudo-tipove kao PostgreSQL vrste stupaca. Koriste se za deklariranje argumenta funkcije ili vrste povrata.

Svaki od dostupnih pseudotipova je od pomoći u situacijama u kojima dokumenti o ponašanju funkcije ne odgovaraju jednostavnom preuzimanju ili vraćanju vrijednosti određene SQL vrsta podataka.

Ime Description
bilo koji Funkcija prihvaća sve vrste ulaznih podataka.
Niz Funkcija prihvaća bilo koji tip podataka niza.
Bilo koji element Funkcija prihvaća bilo koju vrstu podataka.
Bilo koji popis Funkcija prihvaća bilo koji tip podataka enum.
Nonarray Funkcija prihvaća bilo koji tip podataka koji nije niz.
Cstring Funkcija prihvaća ili vraća C niz koji završava nulom.
interni Interna funkcija prihvaća ili vraća interni tip podataka poslužitelja.
Rukovatelj_jezikom Deklarirano je da vraća rukovatelja jezikom.
Zapis Pronađite funkciju koja vraća neodređenu vrstu retka.
Okidač Funkcija okidača koristi se za vraćanje okidača.

Važno je da korisnik koji koristi ovu funkciju mora biti siguran da će se funkcija ponašati sigurno kada se pseudotip koristi kao tip argumenta.

Najbolje prakse za korištenje tipova podataka

  • Koristite tip podataka "tekst" osim ako ne želite ograničiti unos
  • Nikada nemojte koristiti "char".
  • Cijeli brojevi koriste "int." Koristite bigint samo kada imate stvarno velike brojeve
  • Koristite "numeric" gotovo uvijek
  • Koristite float in PostgreSQL ako imate IEEE 754 izvor podataka

Rezime

  • PostgreSQL nudi bogat skup izvornih tipova podataka za korisnike
  • PostgreSQL podržava karakterne tipove podataka za pohranu tekstualnih vrijednosti
  • PostgreSQL podržava dvije različite vrste brojeva: 1. cijele brojeve, 2. brojeve s pomičnim zarezom
  • Binarni niz je niz bajtova ili okteta
  • PostgreSQL ima vrstu mrežne adrese koja vam pomaže optimizirati pohranu mrežnih podataka
  • Pretraživanje teksta PostgreSQL strukture podataka dizajnirane su za podršku pretraživanja cijelog teksta
  • Datum/vrijeme PSQL tipovi podataka dopuštaju informacije o datumu i vremenu u različitim formatima
  • Tipovi polja Boolean Postgres mogu sadržavati tri vrijednosti 1. True 2. False 3. Null
  • Geometrijski PostgreSQL tipovi podataka predstavljaju dvodimenzionalne prostorne objekte
  • Nabrojane vrste podataka u PostgreSQL koristan je za predstavljanje informacija koje se rijetko mijenjaju, kao što je kod zemlje ili ID podružnice
  • Universally Unique Identifies (UUID) je 128-bitna veličina koju generira algoritam
  • PostgreSQL ima mnogo unosa posebne namjene koji se nazivaju pseudo-tipovi
  • Najbolja je praksa koristiti vrstu podataka "tekst" osim ako ne želite ograničiti unos

Sažmite ovu objavu uz: