PostgreSQL ponuja bogat nabor izvornih podatkovnih vrst za uporabnike. Uporabniki lahko dodajo nove vrste s pomočjo ukaza CREATE TYPE. Omogoča tudi poizvedbe enostavnejše in bolj berljive.
Vrste podatkov v PostgreSQL
PostgreSQL podpira naslednje tipe podatkov:
- Vrste besedila
- Številske vrste
- Datumi in časi
- XML
- JSON
- Logično
- Bitovi
- Binarni podatki
- Omrežje
- Polja
- Ustvarite svoj podatkovni tip
- Logično
- Časovno
- UUID
- Matrika
- JSON
- Posebni tipi podatkov za shranjevanje omrežnega naslova in geometrijskih podatkov.
Podrobno preučimo tipe podatkov PostgreSQL
- Znakovni tipi podatkov
- Numerični podatkovni tipi
- Binarni tipi podatkov
- Vrsta omrežnega naslova
- Vrsta iskanja besedila
- Datum / čas Podatkovni tipi
- Logična vrsta
- Geometrijski tipi podatkov
- Naštete vrste
- Vrsta območja
- Vrsta UUID
- Tip XML
- Vrsta JSON
- Psevdotipi
Znakovni tipi podatkov
PostgreSQL podpira tipe podatkovnih znakov za shranjevanje besedilnih vrednosti. PostgreSQL gradi tipe podatkov o znakih iz istih notranjih struktur. PostgreSQL ponuja tri vrste znakov: CHAR (n), VARCHAR (n) in TEXT.
Ime | Opis |
---|---|
varchar (n) | Omogoča prijavo spremenljive dolžine z omejitvijo |
Char (n) | Fiksna dolžina, prazno oblazinjeno |
Besedilo | Uporaba lahko uporablja to vrsto podatkov za razglasitev spremenljivke z neomejeno dolžino |
Numerični podatkovni tipi
PostgreSQL podpira dve različni vrsti številk:
- Cela števila
- Števila s plavajočo vejico
Ime | Velikost trgovine | Doseg |
---|---|---|
smallint | 2 bajta | -32768 do +32767 |
celo število | 4 bajti | -2147483648 do +2147483647 |
bigint | 8 bajtov | -9223372036854775808 do 9223372036854775807 |
decimalno | spremenljivka | Če ste ga razglasili kot decimalni tip podatkov, sega od 131072 števk pred decimalno vejico do 16383 števk za decimalno vejico |
številčno | spremenljivka | Če jo prijavite kot številko, lahko vključite število do 131072 števk pred decimalno vejico na 16383 števk za decimalno vejico |
resnično | 4 bajti | Natančnost 6 decimalnih mest |
dvojno | 8 bajtov | Natančnost 15 decimalnih mest |
Binarni tipi podatkov
Binarni niz je zaporedje oktetov ali bajtov. Binarni tipi podatkov Postgres so razdeljeni na dva načina.
- Binarni nizi omogočajo shranjevanje verjetnosti vrednosti nič
- Okteti, ki jih ni mogoče natisniti
Znakovni nizi ne dovoljujejo nič oktetov, prav tako pa ne dovoli nobenih drugih oktetnih vrednosti in zaporedij, ki so neveljavna v skladu s pravili kodiranja nabora znakov baze podatkov.
Ime | Velikost prostora za shranjevanje | Opis |
---|---|---|
Bajt | 1 do 4 bajti plus velikost binarnega niza | Binarni niz s spremenljivo dolžino |
Vrsta omrežnega naslova
Številne aplikacije shranjujejo informacije o omrežju, kot so naslovi IP uporabnikov oz
senzorji. PostgreSQL ima tri izvorne vrste, ki vam pomagajo optimizirati omrežne podatke.
Ime | Velikost | Opis |
---|---|---|
jabolčnik | 7 ali 19 bye | Omrežja IPV4 in IPv6 |
Inet | 7 ali 19 bajtov | Gostitelj in omrežja IPV4 in IPV5 |
macaddr | 6 bajtov | Naslovi MAC |
Uporaba vrst omrežnih naslovov ima naslednje prednosti
- Prihranek prostora za shranjevanje
- Preverjanje vhodnih napak
- Funkcije, kot je iskanje podatkov po podomrežju
Vrsta iskanja besedila
PostgreSQL ponuja dve vrsti podatkov, ki sta zasnovani za podporo iskanju po celotnem besedilu. Iskanje po celotnem besedilu je iskanje po zbirki dokumentov v naravnem jeziku za iskanje tistih, ki se najbolje ujemajo s poizvedbo.
- Iskanje besedila Tsvector Vrste spremenljivk PostgreSQL predstavljajo dokument v obliki, optimizirani za iskanje po besedilu
- Iskanje po besedilu vrste poizvedbe shranjuje ključne besede, ki jih je treba iskati
Datum / čas Podatkovni tipi
PostgreSQL časovni žig ponuja mikrosekundno natančnost namesto druge natančnosti. Poleg tega imate tudi možnost shranjevanja s časovnim pasom ali brez njega. PostgreSQL bo na vhodu časovni žig s časovnim pasom pretvoril v UTC in ga shranil.
Vnos datuma in časa je sprejemljiv v različnih oblikah, vključno s tradicionalnimi Postgres, ISO 8601. Združljiv s SQL itd.
PostgreSQL podpira naročanje dan / mesec / leto. Podprti formati so DMY, MDY, YMD
Časovne vrste podatkov
Ime | Velikost | Doseg | Resolucija |
---|---|---|---|
Časovni žig brez časovnega pasu | 8 bajtov | 4713 pr.n.št. do 294276 n | 1 mikrosekunda / 14 števk |
Časovni žig s časovnim pasom | 8 bajtov | 4713 pr.n.št. do 294276 n | 1 mikrosekunda / 14 števk |
datum | 4 bajti | 4713 pr.n.št. do 294276 n | Nekega dne |
Čas brez časovnega pasu | 8 bajtov | Od 00:00:00 do 24:00:00 | 1 mikrosekunda / 14 števk |
Čas s časovnim pasom | 12 bajtov | 00:00:00 + 1459 do 24: 00: 00-1459 | 1 mikrosekunda / 14 števk |
Interval | 12 bajtov | -178000000 do 178000000 let | 1 mikrosekunda / 14 števk |
Primeri:
Vhod | Opis |
---|---|
2025-09-07 | ISO 8601, 7. septembra s poljubnim slogom datuma (priporočena oblika) |
7. septembra 2025 | 7. septembra s poljubnim datumom |
7.9.2025 | 7. septembra z MDY, 9. julija z DMY |
7. 9. 25 | 7. septembra 2025 z MDY |
2025-7. September | 7. septembra s poljubnim datumom |
7. september 2018 | 7. septembra s poljubnim datumom |
7. september-25 | 7. septembra 2025 z YMD |
20250907 | ISO 8601,7, september 20225 v katerem koli načinu |
2025.250 | leto in dan v letu, v tem primeru 7. septembra 2025 |
J25250 | Julijski zmenek |
Čas / čas z vnosom časovnega pasu
Vhod | Opis |
---|---|
11: 19: 38,507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Enako kot 11:19 |
23:19 | enako kot 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, enako kot 23:19 EST |
23:19 EST | časovni pas, določen kot EST, enako kot 23:19 EST |
Logična vrsta
Logičen podatkovni tip lahko vsebuje
- Prav
- Lažno
- nič
vrednote.
Uporabljate bool ali logične ključno besedo, da razglasi stolpec z Boolove vrste podatkov.
Ko vstavite vrednosti v logični stolpec, Postgre pretvori vrednosti kot
- Da
- y
- 1.
- t
- prav
v 1.
Medtem ko vrednote kot
- Ne
- N
- 0
- F
- Lažno
se pretvorijo v 0
Med izbiro podatkov se vrednosti ponovno pretvorijo nazaj v da, res, y itd.
Geometrijski tipi podatkov
Geometrijski podatkovni tipi predstavljajo dvodimenzionalne prostorske objekte. Pomagajo pri izvajanju operacij, kot so rotacije, skaliranje, prevajanje itd.
Ime | Velikost prostora za shranjevanje | Zastopanje | Opis |
---|---|---|---|
Točka | 16 bajtov | Točka na ravnini | (x, y) |
Vrstica | 32 bajtov | Neskončna črta | ((xl.yl). (x2.y2)) |
Lseg | 32 bajtov | Končni odsek črte | ((xl.yl). (x2.y2)) |
Škatla | 32 bajtov | Pravokotna škatla | ((xl.yl). (x2.y2)) |
Pot | 16n + 16n bajtov | Zapri in odpri pot | ((xl.yl),…) |
Poligon | 40 + 16n bajtov | Poligon | [(xl.yl)….] |
Krog | 24 bajtov | Krog | <(xy) .r> (sredinska točka in polmer) |
Naštete vrste
Našteti podatkovni tip PostgreSQL je uporaben za predstavitev redko spreminjajočih se informacij, kot je koda države ali ID podružnice. Vrsta števila podatkov je v tabeli predstavljena s tujimi ključi, da se zagotovi celovitost podatkov.
Primer:
Barva las je v demografski bazi podatkov dokaj statična
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Vrsta območja
Številne poslovne aplikacije zahtevajo podatke v obsegih. Običajno sta za obravnavanje obsegov definirana dva stolpca (primer: začetni datum, končni datum). To je hkrati neučinkovito in težko vzdrževati.
Postgre je zgradil vrste obsega, kot sledi
- int4range - prikaže obseg celotnega števila
- int8range - prikaže obseg biginta
- numrange - prikaže številčno območje
- tstrange - vam pomaga prikazati časovni žig brez časovnega pasu
- čudno - omogoča prikaz časovnega žiga s časovnim pasom
- časovno obdobje - časovno obdobje
Vrsta UUID
Univerzalno edinstvena identifikacija (UUID) je 128-bitna količina, ki jo ustvari algoritem. Zelo malo verjetno je, da bo isti identifikator ustvarila druga oseba na svetu z istim algoritmom. Zato so za porazdeljene sisteme ti identifikatorji idealna izbira, saj ponujajo edinstvenost znotraj ene baze podatkov. UUID je zapisan kot skupina malih šestnajstiških številk, z različnimi skupinami, ločenimi z vezaji.
PostgreSQL ima izvorni podatkovni tip UUID, ki porabi 16 bajtov pomnilnika ... UUID je idealen podatkovni tip za primarne ključe.
Primer:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre sprejema tudi alternativne oblike vhodnih podatkov UUID, kot so vse velike črke, brez vezajev, oklepajev itd.
Tip XML
PostgreSQL omogoča shranjevanje podatkov XML v podatkovnem tipu, vendar ni nič drugega kot razširitev besedilnega podatkovnega tipa. Prednost pa je v tem, da preveri, ali je vhodni XML dobro oblikovan.
Primer:
XMLPARSE (DOCUMENT '') Data Type …
Vrsta JSON
Za shranjevanje podatkov JSON PostgreSQL ponuja 2 podatkovna tipa
- JSON
- JSONB
json | Jsonb |
---|---|
Preprosta razširitev besedilnega podatkovnega tipa z validacijo JSON | Binarna predstavitev podatkov JSON |
Vstavljanje je hitro, vendar je pridobivanje podatkov razmeroma počasno. | Vstavljanje je počasno, vendar izberite (hitro pridobivanje podatkov) |
Vnesene podatke shrani natanko tako, kot so, vključno s presledki. | Podpira indeksiranje. Lahko optimizira presledek za hitrejše iskanje. |
Ponovna obdelava pri pridobivanju podatkov | Pri pridobivanju podatkov ni potrebna ponovna obdelava |
Najpogosteje uporabljeni podatkovni tip JSON je uporabljal nas jsonb, razen če obstaja posebna potreba po uporabi podatkovnega tipa JSON.
Primer:
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}');
Psevdotipi
PostgreSQL ima veliko namenskih vnosov, ki se imenujejo psevdotipi. Kot vrst stolpcev PostgreSQL ne morete uporabljati psevdotipov. Uporabljajo se za izjavo ali funkcijski argument ali vrsto vrnitve.
Vsak od razpoložljivih psevdotipov je koristen v primerih, ko dokumenti vedenja funkcije ne ustrezajo preprosto sprejemanju ali vrnitvi vrednosti določenega podatkovnega tipa SQL.
Ime | Opis |
---|---|
Kaj | Funkcija sprejema vse vrste vhodnih podatkov. |
Matrika | Funkcija sprejema kateri koli podatkovni tip matrike. |
Kateri koli element | Funkcija sprejema vse vrste podatkov. |
Vsak enum | Funkcija sprejema kateri koli podatkovni tip enum. |
Nonarray | Funkcija sprejema vse vrste podatkov, ki niso matrične. |
Cstring | Funkcija sprejme ali vrne nize C, ki se končajo z ničemer. |
Notranji | Notranja funkcija sprejme ali vrne notranji podatkovni tip strežnika. |
Računalnik_jezika | Izjavljeno je, da vrne upravljalnik jezika. |
Snemaj | Poiščite funkcijo, ki vrne nedoločen tip vrstice. |
Sprožilec | Funkcija sprožilca se uporablja za vrnitev sprožilca. |
Pomembno je, da mora uporabnik, ki uporablja to funkcijo, poskrbeti, da se bo funkcija obnašala varno, kadar bo psevdotip uporabljen kot argument.
Najboljše prakse pri uporabi podatkovnih vrst
- Uporabite podatkovni tip "besedilo", razen če želite omejiti vnos
- Nikoli ne uporabljajte "char".
- Cela števila uporabljajo "int." Bigint uporabljajte samo, če imate res velike številke
- Skoraj vedno uporabite "številsko"
- Če imate vir podatkov IEEE 754, uporabite float v PostgreSQL
Povzetek
- PostgreSQL ponuja bogat nabor izvornih podatkovnih vrst za uporabnike
- PostgreSQL podpira tipe podatkovnih znakov za shranjevanje besedilnih vrednosti
- PostgreSQL podpira dve različni vrsti števil: 1. Cela števila, 2. Števila s plavajočo vejico
- Binarni niz je zaporedje bajtov ali oktetov
- PostgreSQL ima vrsto omrežnega naslova, ki vam pomaga optimizirati shranjevanje omrežnih podatkov
- Iskanje besedila PostgreSQL podatkovne strukture so zasnovane tako, da podpirajo iskanje po celotnem besedilu
- Datum / čas PSQL podatkovni tipi omogočajo informacije o datumu in času v različnih oblikah zapisa
- Logične vrste polj Postgres lahko vsebujejo tri vrednosti 1. True 2. False 3. Null
- Geometrijski podatkovni tipi PostgreSQL predstavljajo dvodimenzionalne prostorske objekte
- Našteti podatkovni tipi v PostgreSQL so uporabni za predstavitev redko spreminjajočih se informacij, kot so koda države ali ID podružnice
- Univerzalno edinstvena identifikacija (UUID) je 128-bitna količina, ki jo ustvari algoritem
- PostgreSQL ima veliko namenskih vnosov, ki se imenujejo psevdotipi
- Najboljša praksa je, da uporabite besedilno vrsto podatkov, razen če želite omejiti vnos