PostgreSQL Tipovi podataka: Numerički, Znakovni, Bajtni

⚡ Pametni sažetak

PostgreSQL Tipovi podataka definiraju vrstu vrijednosti koju svaki stupac može pohraniti, a obuhvaćaju znakovne, numeričke, binarne, datumske i vremenske, logičke, geometrijske, mrežne, UUID, XML i JSON kategorije. PostgreSQL također omogućuje korisnicima stvaranje prilagođenih tipova pomoću naredbe CREATE TYPE.

  • 🔤 Vrste znakova: CHAR, VARCHAR i TEXT pohranjuju tekstualne vrijednosti fiksne, promjenjive i neograničene duljine.
  • 🔢 Numerički tipovi: Cijeli brojevi i brojevi s pomičnim zarezom kreću se od smallint do bigint, plus točne numeričke i decimalne vrijednosti.
  • 🕒 Datum i vrijeme: Vremenski žig, datum, vrijeme i interval nude mikrosekundnu preciznost s opcionalnim vremenskim zonama.
  • Boolean i Enum: Boolean ima vrijednost true, false ili null, dok nabrojani tipovi rijetko mijenjaju fiksne skupove.
  • 🌐 Specijalizirane vrste: Mrežni, geometrijski, UUID, XML, JSON i JSONB obrađuju adrese, oblike, identifikatore i strukturirane podatke.
  • 💡 Najbolja vježba: Za nizove znakova koristite TEXT, a za brojeve NUMERIC, a prilagođene tipove stvarajte samo kada je potrebno.

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
  • privremen
  • UUID
  • 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 IPv6 hostovi 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. rujna 2025. u bilo kojem načinu rada
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),…)
Polygon 40 + 16n bajtova Polygon [(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

Univerzalno jedinstveni identifikator (UUID) je 128-bitna veličina koju generira algoritam. Vrlo je malo vjerojatno da će isti identifikator generirati neka druga osoba u svijetu koristeći isti algoritam. Zato su ovi identifikatori idealan izbor za distribuirane sustave 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 UUID tip podataka koji troši 16 bajtova prostora za pohranu. 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"], "onboarded": 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

Pitanja i odgovori

Numerički (decimalni) tipovi pohranjuju točne vrijednosti i idealni su za novac i precizne izračune. Tipovi s pomičnim zarezom (realni i dvostruki) pohranjuju približne vrijednosti s bržim performansama, ali malim pogreškama zaokruživanja, stoga ih izbjegavajte za točne financijske podatke.

Da. PostgreSQL Omogućuje bilo kojem stupcu pohranjivanje polja osnovnog tipa, kao što je integer[] ili text[]. Polja su korisna za popise vrijednosti i mogu se pretraživati, indeksirati i odgniježđivati ​​u upitima.

Koristite numerički tip za valutu jer pohranjuje točne decimalne vrijednosti. Izbjegavajte tipove s pomičnim zarezom, koji unose pogreške zaokruživanja. Namjenski tip novca također postoji, ali je manje fleksibilan za podatke o više valuta.

Umjetna inteligencija može pregledati vaše uzorke podataka i preporučiti prikladne tipove, kao što su numerički za novac ili jsonb za fleksibilna polja. Objašnjava kompromise u pohrani, preciznosti i performansama kako biste mogli samouvjereno donositi odluke.

Da. Umjetna inteligencija može mapirati tipove podataka iz MySQL, Oracleili SQL Server na njihov PostgreSQL ekvivalenti i neusklađenosti oznaka, kao što su TINYINT ili NVARCHAR, helping planirate glatkiju migraciju baze podataka.

Sažmite ovu objavu uz: