PostgreSQL nudi bogat skup nativnih vrsta podataka za korisnike. Korisnici mogu dodavati nove vrste uz pomoć naredbe CREATE TYPE. Također čini upite jednostavnijim i čitljivijim.
Tipovi podataka u PostgreSQL-u
PostgreSQL podržava sljedeće tipove podataka:
- Vrste teksta
- Numeričke vrste
- Datumi i vremena
- XML
- JSON
- Booleova
- Komadići
- Binarni podaci
- Mreža
- Nizovi
- Stvorite svoj tip podataka
- Booleova
- Vremenski
- UUID
- Polje
- JSON
- Posebni tipovi podataka za pohranu mrežne adrese i geometrijskih podataka.
Detaljno proučimo tipove podataka PostgreSQL
- Tipovi podataka o znakovima
- Numerički tipovi podataka
- Binarni tipovi podataka
- Vrsta mrežne adrese
- Vrsta pretraživanja teksta
- Vrste podataka o datumu / vremenu
- Logički tip
- Geometrijski tipovi podataka
- Nabrojani tipovi
- Tip dometa
- UUID tip
- XML tip
- Tip JSON
- Pseudo-vrste
Tipovi podataka o znakovima
PostgreSQL podržava tipove podataka znakova za pohranu tekstualnih vrijednosti. PostgreSQL gradi tipove podataka znakova iz istih unutarnjih struktura. PostgreSQL nudi tri vrste znakova: CHAR (n), VARCHAR (n) i TEXT.
Ime | Opis |
---|---|
varchar (n) | Omogućuje vam deklariranje promjenljive duljine s ograničenjem |
Char (n) | Fiksne duljine, prazno podstavljeno |
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čnom zarezom
Ime | Veličina trgovine | Domet |
---|---|---|
smallint | 2 bajta | -32768 do +32767 |
cijeli broj | 4 bajta | -2147483648 do +2147483647 |
bigint | 8 bajtova | -9223372036854775808 do 9223372036854775807 |
decimal | varijabilna | Ako ste ga deklarirali kao decimalni tip podataka, kreće se od 131072 znamenke prije decimalne točke do 16383 znamenke nakon decimalne točke |
brojčani | varijabilna | Ako ga prijavite kao broj, možete uključiti broj do 131072 znamenke prije decimalne točke na 16383 znamenke nakon decimalne točke |
stvaran | 4 bajta | Preciznost 6 decimalnih znamenki |
dvostruko | 8 bajtova | Preciznost 15 decimalnih znamenki |
Binarni tipovi podataka
Binarni niz je niz okteta ili bajtova. Binarni tipovi podataka Postgres podijeljeni su na dva načina.
- Binarni nizovi omogućuju pohranjivanje izgleda nula
- Okteti koji se ne mogu ispisati
Nizovi znakova ne dopuštaju nula okteta, a također onemogućuju bilo koje druge oktetne vrijednosti i sekvence koje su nevaljane prema pravilima kodiranja skupa znakova baze podataka.
Ime | Veličina spremišta | Opis |
---|---|---|
Bajt | 1 do 4 bajta plus veličina binarnog niza | Binarni niz promjenljive duljine |
Vrsta mrežne adrese
Mnoge aplikacije pohranjuju mrežne podatke poput IP adrese korisnika ili
senzori. PostgreSQL ima tri izvorna tipa koja vam pomažu u optimizaciji mrežnih podataka.
Ime | Veličina | Opis |
---|---|---|
jabukovača | 7 ili 19 bajba | IPV4 i IPv6 mreže |
Inet | 7 ili 19 bajtova | IPV4 i IPV5 domaćin i mreže |
macaddr | 6 bajtova | MAC adrese |
Korištenje vrsta mrežnih adresa ima sljedeće prednosti
- Ušteda prostora za pohranu
- Provjera ulazne pogreške
- Funkcije poput pretraživanja podataka po podmreži
Vrsta pretraživanja teksta
PostgreSQL nudi dvije vrste podataka koje su dizajnirane za podršku pretraživanju cijelog teksta. Pretraživanje cjelovitog teksta je pretraživanje zbirke dokumenata na prirodnom jeziku radi pretraživanja onih koji najbolje odgovaraju upitu.
- Tsvector pretraživanje teksta Vrste varijabli PostgreSQL predstavljaju dokument u obliku optimiziranom za pretraživanje teksta
- Pretraživanje teksta vrste upita pohranjuje ključne riječi koje je potrebno pretražiti
Vrste podataka o datumu / vremenu
PostgreSQL vremenska oznaka nudi mikrosekundnu preciznost umjesto druge preciznosti. Štoviše, također imate mogućnost pohrane s vremenskom zonom ili bez nje. PostgreSQL će pretvoriti vremensku oznaku s vremenskom zonom u UTC na unosu i pohraniti je.
Unos datuma i vremena prihvaća se u različitim formatima, uključujući tradicionalni Postgres, ISO 8601. SQL-kompatibilni itd.
PostgreSQL podržava redoslijed po danu / mjesecu / godini. Podržani formati su DMY, MDY, YMD
Privremeni tipovi podataka
Ime | Veličina | Domet | Razlučivost |
---|---|---|---|
Vremenska oznaka bez vremenske zone | 8 bajtova | 4713. pr. Kr. Do 294276 | 1 mikrosekunda / 14 znamenki |
Vremenska oznaka s vremenskom zonom | 8 bajtova | 4713. pr. Kr. Do 294276 | 1 mikrosekunda / 14 znamenki |
datum | 4 bajta | 4713. pr. Kr. Do 294276 | Jednog dana |
Vrijeme bez vremenske zone | 8 bajtova | 00:00:00 do 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 | Opis |
---|---|
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 |
7.9.2025 | 7. rujna s MDY, 9. srpnja s DMY |
7. 9. 25 | 7. rujna 2025. s MDY |
2025.-7 | 7. rujna s bilo kojim stilom datuma |
7. rujna 2018 | 7. rujna s bilo kojim stilom datuma |
7. rujna-25 | 7. rujna 2025. s YMD |
20250907 | ISO 8601,7 rujna 20225 u bilo kojem načinu |
2025.250 | godine i dana u godini, u ovom slučaju 7. rujna 2025 |
J25250 | Julian datum |
Vrijeme / Vrijeme s unosom vremenske zone
Ulazni | Opis |
---|---|
11: 19: 38,507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Isto kao i 11:19 |
23:19 | isto kao 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, isto kao i 23:19 EST |
23:19 EST | vremenska zona navedena kao EST, isto kao i 23:19 EST |
Logički tip
Može sadržavati logički tip podataka
- Pravi
- Lažno
- null
vrijednosti.
Koristite bool ili logičku ključnu riječ za deklariranje stupca s logičkim tipom podataka.
Kada umetnete vrijednosti u logički stupac, Postgre pretvara vrijednosti poput
- Da
- g
- 1
- t
- pravi
u 1.
Dok vrijednosti poput
- Ne
- N
- 0
- F
- Lažno
pretvaraju se u 0
Tijekom odabira podataka, vrijednosti se ponovno pretvaraju natrag u da, istinu, y itd.
Geometrijski tipovi podataka
Geometrijski tipovi podataka predstavljaju dvodimenzionalne prostorne objekte. Pomažu u izvođenju operacija poput rotacija, skaliranja, prevođenja itd.
Ime | Veličina spremišta | Zastupanje | Opis |
---|---|---|---|
Točka | 16 bajtova | Usmjerite na ravninu | (x, y) |
Crta | 32 bajta | Beskonačna crta | ((xl.yl). (x2.y2)) |
Lseg | 32 bajta | Konačni linijski segment | ((xl.yl). (x2.y2)) |
Kutija | 32 bajta | Pravokutna kutija | ((xl.yl). (x2.y2)) |
Staza | 16n + 16n bajtova | Zatvori i otvori put | ((xl.yl),…) |
Poligon | 40 + 16n bajtova | Poligon | [(xl.yl)….] |
Krug | 24 bajta | Krug | <(xy) .r> (središnja točka i polumjer) |
Nabrojani tipovi
Nabrojeni PostgreSQL tip podataka koristan je za predstavljanje rijetko mijenjajućih podataka kao što su pozivni broj države ili ID podružnice. Nabrojani tip podataka predstavljen je u tablici s inozemnim ključevima kako bi se osigurala cjelovitost podataka.
Primjer:
Boja kose prilično je statična u demografskoj bazi podataka
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Tip dometa
Mnoge poslovne aplikacije zahtijevaju podatke u rasponima. Uobičajeno su definirana dva stupca (primjer: datum početka, datum završetka) za obradu raspona. To je i neučinkovito i teško za održavanje.
Postgre je sagradio vrste raspona kako slijedi
- int4range - Prikazuje raspon cijelog broja
- int8range - Prikaz raspona biginta
- numrange - prikazuje numerički raspon
- tstrange - pomaže vam da prikažete vremensku oznaku bez vremenske zone
- čudno - omogućuje vam prikaz vremenske oznake s vremenskom zonom
- datumski raspon - raspon datuma
UUID tip
Univerzalno jedinstveni identificira (UUID) je 128-bitna veličina koju generira algoritam. Vrlo je malo vjerojatno da će isti identifikator generirati druga osoba na svijetu koristeći isti algoritam. Zbog toga su za distribuirane sustave ovi identifikatori idealan izbor jer nude jedinstvenost unutar jedne baze podataka. UUID je napisan kao skupina malih heksadecimalnih znamenki, s različitim skupinama odvojenim crticama.
PostgreSQL ima izvorni UUID tip podataka koji zauzima 16 bajta 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 UUID unosa, kao što su svi veliki i mali slovi, bez crtica, zagrada itd.
XML tip
PostgreSQL vam omogućuje pohranu XML podataka u vrstu podataka, ali to je ništa više od proširenja tekstualne vrste podataka. Ali prednost je u tome što provjerava je li ulazni XML dobro oblikovan.
Primjer:
XMLPARSE (DOCUMENT '') Data Type …
Tip JSON
Za pohranu JSON podataka PostgreSQL nudi 2 vrste podataka
- JSON
- JSONB
json | Jsonb |
---|---|
Jednostavno proširenje tekstualne vrste podataka s JSON provjerom valjanosti | Binarni prikaz JSON podataka |
Umetanje je brzo, ali dohvat podataka relativno spor. | Umetanje je sporo, ali odabir (brzo je preuzimanje podataka) |
Sprema unesene podatke točno onako kako jesu, uključujući razmake. | Podržava indeksiranje. Može optimizirati razmak kako bi se brže pristupilo. |
Ponovna obrada pri pronalaženju podataka | Nije potrebna ponovna obrada za pronalaženje podataka |
Najčešće korišteni tip podataka JSON koristio je nas jsonb, osim ako postoji posebna potreba za korištenjem tipa podataka JSON.
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-vrste
PostgreSQL ima mnogo unosa za posebne namjene koji se nazivaju pseudo-tipovima. Ne možete koristiti pseudo-vrste kao vrste stupaca PostgreSQL. Koriste se za deklariranje ili argument funkcije ili tip povratka.
Svaka od dostupnih pseudo-vrsta korisna je u situacijama kada dokumenti ponašanja funkcije ne odgovaraju jednostavnom uzimanju ili vraćanju vrijednosti određenog SQL tipa podataka.
Ime | Opis |
---|---|
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 koji tip podataka. |
Bilo koji nabrajanje | 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 nulom završeni C niz. |
Interno | Interna funkcija prihvaća ili vraća interni tip podataka poslužitelja. |
Rukovalac jezikom | Proglašeno je da vraća rukovatelj jezikom. |
Snimiti | Pronađite funkciju koja vraća neodređeni tip 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 pseudo-tip koristi kao tip argumenta.
Najbolji primjeri iz tipova podataka
- Upotrijebite vrstu podataka "tekst", osim ako ne želite ograničiti unos
- Nikad ne upotrebljavajte "char".
- Cijeli brojevi koriste "int." Koristite bigint samo kada imate stvarno velike brojeve
- Gotovo uvijek koristite "numeričku"
- Koristite float u PostgreSQL-u ako imate IEEE 754 izvor podataka
Sažetak
- PostgreSQL nudi bogat skup nativnih vrsta podataka za korisnike
- PostgreSQL podržava tipove podataka znakova za pohranu tekstualnih vrijednosti
- PostgreSQL podržava dvije različite vrste brojeva: 1. Cijeli brojevi, 2. brojevi s pomičnom zarezom
- Binarni niz je slijed bajtova ili okteta
- PostgreSQL ima vrstu mrežne adrese koja vam pomaže optimizirati pohranu mrežnih podataka
- Pretraživanje teksta PostgreSQL podatkovne strukture dizajnirane su za podršku pretraživanju cijelog teksta
- Datum / vrijeme PSQL tipovi podataka dopuštaju podatke o datumu i vremenu u različitim formatima
- Logičke vrste polja Postgres mogu sadržavati tri vrijednosti 1. Tačno 2. Netačno 3. Null
- Geometrijski tipovi podataka PostgreSQL predstavljaju dvodimenzionalne prostorne objekte
- Nabrojani tipovi podataka u PostgreSQL-u korisni su za predstavljanje rijetko mijenjajućih podataka kao što su pozivni broj države ili ID podružnice
- Univerzalno jedinstveni identificira (UUID) je 128-bitna veličina koju generira algoritam
- PostgreSQL ima mnogo unosa za posebne namjene koji se nazivaju pseudo-tipovima
- Najbolja je praksa koristiti vrstu podataka "tekst", osim ako ne želite ograničiti unos