PostgreSQL lietotājiem piedāvā bagātīgu vietējo datu tipu komplektu. Lietotāji var pievienot jaunus veidus, izmantojot komandu CREATE TYPE. Tas arī padara vaicājumus vienkāršākus un lasāmākus.
Datu tipi PostgreSQL
PostgreSQL atbalsta šādus datu tipus:
- Teksta veidi
- Ciparu veidi
- Datumi un laiki
- XML
- JSON
- Būla
- Biti
- Binārie dati
- Tīkls
- Masīvi
- Izveidojiet savu datu tipu
- Būla
- Temporāls
- UUID
- Masīvs
- JSON
- Īpaši datu tipi tīkla adreses un ģeometrisko datu glabāšanai.
Detalizēti izpētīsim PostgreSQL datu tipus
- Rakstzīmju datu tipi
- Skaitliskie datu tipi
- Binārie datu tipi
- Tīkla adreses tips
- Teksta meklēšanas veids
- Datuma / laika datu tipi
- Būla tips
- Ģeometriskie datu tipi
- Uzskaitītie veidi
- Diapazona tips
- UUID tips
- XML tips
- JSON tips
- Pseidotipi
Rakstzīmju datu tipi
PostgreSQL atbalsta rakstzīmju datu tipus teksta vērtību glabāšanai. PostgreSQL rakstzīmju datu tipus veido no vienas un tās pašas iekšējās struktūras. PostgreSQL piedāvā trīs rakstzīmju datu tipus: CHAR (n), VARCHAR (n) un TEXT.
Nosaukums | Apraksts |
---|---|
varchar (n) | Ļauj deklarēt mainīgu garumu ar ierobežojumu |
Char (n) | Fiksēta garuma, tukša, polsterēta |
Teksts | Use var izmantot šo datu tipu, lai deklarētu mainīgo ar neierobežotu garumu |
Skaitliskie datu tipi
PostgreSQL atbalsta divus atšķirīgus numuru veidus:
- Veseli skaitļi
- Peldošo punktu skaitļi
Nosaukums | Veikala lielums | Diapazons |
---|---|---|
maziņš | 2 baiti | -32768 līdz +32767 |
vesels skaitlis | 4 baiti | No -2147483648 līdz +2147483647 |
bigint | 8 baiti | -9223372036854775808 līdz 9223372036854775807 |
aiz komata | mainīgais | Ja jūs to deklarējāt kā decimāldaļu, datu tips svārstās no 131072 cipariem pirms komata līdz 16383 cipariem aiz komata |
ciparu | mainīgais | Ja paziņojat, ka tas ir skaitlis, pirms decimāldaļskaitļa jūs varat iekļaut skaitli līdz 131072 cipariem līdz 16383 cipariem aiz komata |
īsts | 4 baiti | 6 ciparu precizitāte |
dubultā | 8 baiti | 15 ciparu precizitāte |
Binārie datu tipi
Binārā virkne ir oktetu vai baitu secība. Binārie Postgres datu tipi tiek sadalīti divos veidos.
- Binārās virknes ļauj uzglabāt nulles vērtības izredzes
- Neapdrukājami okteti
Rakstzīmju virknes nepieļauj nulles oktetus, kā arī neatļauj citas okteta vērtības un secības, kas nav derīgas saskaņā ar datu bāzes rakstzīmju kopas kodēšanas noteikumiem.
Nosaukums | Krātuves lielums | Apraksts |
---|---|---|
Baits | 1 līdz 4 baiti plus binārā virknes lielums | Mainīga garuma binārā virkne |
Tīkla adreses tips
Daudzās lietojumprogrammās tiek saglabāta tīkla informācija, piemēram, lietotāju IP adrese vai
sensori. PostgreSQL ir trīs vietējie veidi, kas palīdz optimizēt tīkla datus.
Nosaukums | Izmērs | Apraksts |
---|---|---|
sidrs | 7 vai 19 baiti | IPV4 un IPv6 tīkli |
Inet | 7 vai 19 baiti | IPV4 un IPV5 resursdators un tīkli |
macaddr | 6 baiti | MAC adreses |
Tīkla adrešu veidu izmantošanai ir šādas priekšrocības
- Krātuves ietaupīšana
- Ievades kļūdu pārbaude
- Funkcijas, piemēram, datu meklēšana apakštīklā
Teksta meklēšanas veids
PostgreSQL nodrošina divus datu tipus, kas paredzēti pilnteksta meklēšanas atbalstam. Pilna teksta meklēšana ir meklēšana, izmantojot dabiskās valodas dokumentu kolekciju, lai meklētu tos, kas vislabāk atbilst vaicājumam.
- Tsvector teksta meklēšana PostgreSQL mainīgo tipi attēlo dokumentu formā, kas optimizēta teksta meklēšanai
- Vaicājuma veida teksta meklēšana glabā atslēgvārdus, kas jāmeklē
Datuma / laika datu tipi
PostgreSQL laika zīmogs piedāvā mikrosekundes precizitāti otrās precizitātes vietā. Turklāt jums ir arī iespēja saglabāt ar laika joslu vai bez tās. PostgreSQL ievades laikā laika zīmogu ar laika joslu pārveidos par UTC un saglabās to.
Datuma un laika ievade tiek pieņemta dažādos formātos, ieskaitot tradicionālos Postgres, ISO 8601. Saderīgs ar SQL utt.
PostgreSQL atbalsta dienu / mēnešu / gadu pasūtīšanu. Atbalstītie formāti ir DMY, MDY, YMD
Laika datu tipi
Nosaukums | Izmērs | Diapazons | Izšķirtspēja |
---|---|---|---|
Laika zīmogs bez laika joslas | 8 baiti | 4713. gadā pirms mūsu ēras līdz 294276. gadam | 1 mikrosekunde / 14 cipari |
Laika zīmogs ar laika joslu | 8 baiti | 4713. gadā pirms mūsu ēras līdz 294276. gadam | 1 mikrosekunde / 14 cipari |
datums | 4 baiti | 4713. gadā pirms mūsu ēras līdz 294276. gadam | Viena diena |
Laiks bez laika joslas | 8 baiti | 00:00:00 līdz 24:00:00 | 1 mikrosekunde / 14 cipari |
Laiks ar laika joslu | 12 baiti | 00:00:00 + 1459 līdz 24:00: 00-1459 | 1 mikrosekunde / 14 cipari |
Intervāls | 12 baiti | -178000000 līdz 178000000 gadiem | 1 mikrosekunde / 14 cipari |
Piemēri:
Ievade | Apraksts |
---|---|
2025-09-07 | ISO 8601, 7. septembris ar jebkuru datuma stilu (ieteicams formāts) |
2025. gada 7. septembris | 7. septembris ar jebkuru datuma stilu |
7/09/2025 | 7. septembrī ar MDY, 9. jūlijā ar DMY |
7.9.25 | 2025. gada 7. septembrī ar MDY |
2025. gada 7. septembris | 7. septembris ar jebkuru datuma stilu |
Septembris-7-2018 | 7. septembris ar jebkuru datuma stilu |
7. septembris-25 | 2025. gada 7. septembrī ar YMD |
20250907 | ISO 8601,7 20225. gada septembris jebkurā režīmā |
2025.250 | gads un gada diena, šajā gadījumā 2025. gada 7. septembris |
J25250 | Džuliana datums |
Laiks / laiks ar laika joslas ievadi
Ievade | Apraksts |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Tas pats, kas 11:19 |
23:19 | tas pats, kas 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, tāds pats kā 23:19 EST |
23:19 EST | laika josla ir norādīta kā EST, tāpat kā plkst. 23:19 EST |
Būla tips
Būla datu tips var būt
- Patiesi
- Nepatiesa
- nulle
vērtības.
Lai deklarētu kolonnu ar Būla datu tipu, izmantojat Bool vai Boolean atslēgvārdu.
Ievietojot vērtības būla kolonnā, Postgre konvertē tādas vērtības kā
- Jā
- y
- 1
- t
- taisnība
1.
Kaut arī vērtībām patīk
- Nē
- N
- 0
- F
- Nepatiesa
tiek konvertēti uz 0
Atlasot datus, vērtības atkal tiek pārvērstas par jā, taisnība, y utt.
Ģeometriskie datu tipi
Ģeometriskie datu tipi attēlo divdimensiju telpiskos objektus. Tie palīdz veikt tādas darbības kā rotācijas, mērogošana, tulkošana utt.
Nosaukums | Krātuves lielums | Pārstāvība | Apraksts |
---|---|---|---|
Punkts | 16 baiti | Punkts plaknē | (x, y) |
Līnija | 32 baiti | Bezgalīga līnija | ((xl.yl). (x2.y2)) |
Lseg | 32 baiti | Galīgais līnijas segments | ((xl.yl). (x2.y2)) |
Kaste | 32 baiti | Taisnstūra lodziņš | ((xl.yl). (x2.y2)) |
Ceļš | 16n + 16n baiti | Aizvērt un atvērt ceļu | ((xl.yl),…) |
Daudzstūris | 40 + 16 n baiti | Daudzstūris | [(xl.yl)….] |
Aplis | 24 baiti | Aplis | <(xy) .r> (centra punkts un rādiuss) |
Uzskaitītie veidi
Uzskaitītais PostgreSQL datu tips ir noderīgs, lai attēlotu reti mainīgu informāciju, piemēram, valsts kodu vai filiāles ID. Lai nodrošinātu datu integritāti, uzskaitīto datu tips ir attēlots tabulā ar svešām atslēgām.
Piemērs:
Matu krāsa ir diezgan statiska demogrāfiskajā datu bāzē
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Diapazona tips
Daudzām biznesa lietojumprogrammām ir nepieciešami dati diapazonos. Parasti diapazonu apstrādei ir noteiktas divas kolonnas (piemēram: sākuma datums, beigu datums). Tas ir gan neefektīvi, gan grūti uzturami.
Postgre ir izveidojis diapazonu tipus šādi
- int4range - attēlo vesela skaitļa diapazonu
- int8range - bigint displeja diapazons
- numrange - parāda ciparu diapazonu
- tstrange - palīdz jums parādīt laika zīmogu bez laika joslas
- dīvaini - ļauj parādīt laika zīmogu ar laika joslu
- datumu diapazons - datumu diapazons
UUID tips
Universally Unique Identified (UUID) ir 128 bitu lielums, ko ģenerē algoritms. Ir maz ticams, ka to pašu identifikatoru ģenerēs cita persona pasaulē, izmantojot to pašu algoritmu. Tāpēc izplatītajām sistēmām šie identifikatori ir ideāla izvēle, jo tie piedāvā unikalitāti vienā datu bāzē. UUID tiek rakstīts kā mazo burtu heksadecimālo ciparu grupa, ar dažādām grupām atdalot ar defisēm.
PostgreSQL ir vietējais UUID datu tips, kas patērē 16 baitus krātuves ... UUID ir ideāls datu tips primārajām atslēgām.
Piemērs:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre pieņem arī alternatīvas UUID ievades formas, piemēram, visus lielos burtus, bez defisēm, lencēm utt.
XML tips
PostgreSQL ļauj uzglabāt XML datus datu tipā, taču tas nav nekas cits kā teksta datu veida paplašinājums. Bet priekšrocība ir tā, ka tā pārbauda, vai ievades XML ir labi izveidots.
Piemērs:
XMLPARSE (DOCUMENT '') Data Type …
JSON tips
JSON datu glabāšanai PostgreSQL piedāvā divus datu veidus
- JSON
- JSONB
json | Jsonb |
---|---|
Vienkāršs teksta datu tipa paplašinājums ar JSON validāciju | JSON datu binārs attēlojums |
Ievietošana notiek ātri, bet datu izguve ir samērā lēna. | Ievietošana ir lēna, bet izvēlieties (datu izguve ir ātra) |
Saglabā ievadītos datus tieši tādā veidā, kā tas ietver atstarpi. | Atbalsta indeksēšanu. Var optimizēt atstarpi, lai padarītu izguvi ātrāku. |
Datu izguves pārstrāde | Datu izgūšanai nav nepieciešama pārstrāde |
Visplašāk izmantotais JSON datu tips izmantoja mūs jsonb, ja vien nav īpašas vajadzības izmantot JSON datu tipu.
Piemērs:
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}');
Pseidotipi
PostgreSQL ir daudz īpaša mērķa ierakstu, kurus sauc par pseidotipiem. Jūs nevarat izmantot pseidotipus kā PostgreSQL kolonnu tipus. Tie tiek izmantoti, lai deklarētu vai funkcijas argumentu vai atgriešanās tipu.
Katrs no pieejamajiem pseidotipiem ir noderīgs situācijās, kad funkcijas uzvedības dokumenti neatbilst vienkārši noteikta SQL datu veida vērtības ņemšanai vai atdošanai.
Nosaukums | Apraksts |
---|---|
Jebkurš | Funkcija pieņem visu ievades datu tipu. |
Masīvs | Funkcija pieņem jebkuru masīva datu tipu. |
Jebkurš elements | Funkcija pieņem jebkura veida datus. |
Jebkura enum | Funkcija pieņem jebkuru enum datu tipu. |
Nonarray | Funkcija pieņem jebkuru datu veidu, kas nav masīvs. |
Cstring | Funkcija pieņem vai atgriež C virkni ar nulles galu. |
Iekšējais | Iekšējā funkcija pieņem vai atgriež servera iekšējo datu tipu. |
Valodas apstrādātājs | Tiek deklarēts, ka tas atgriež valodas apstrādātāju. |
Ieraksts | Atrodiet funkciju, kas atgriež nenoteiktu rindas veidu. |
Trigeris | Sprūda funkcija tiek izmantota, lai atgrieztu sprūdu. |
Ir svarīgi, lai lietotājam, kurš izmanto šo funkciju, būtu jāpārliecinās, ka funkcija rīkosies droši, ja pseido tips tiek izmantots kā argumentu tips.
Datu tipu izmantošanas paraugprakse
- Izmantojiet teksta datu veidu, ja vien nevēlaties ierobežot ievadi
- Nekad nelietojiet "char".
- Veseli skaitļi lieto “int”. Izmantojiet bigintu tikai tad, ja jums ir patiešām lieli skaitļi
- Gandrīz vienmēr izmantojiet "ciparu"
- Izmantojiet pludiņu PostgreSQL, ja jums ir IEEE 754 datu avots
Kopsavilkums
- PostgreSQL lietotājiem piedāvā bagātīgu vietējo datu tipu komplektu
- PostgreSQL atbalsta rakstzīmju datu tipus teksta vērtību glabāšanai
- PostgreSQL atbalsta divus atšķirīgus skaitļu veidus: 1. Veseli skaitļi, 2. Peldošo punktu skaitļi
- Binārā virkne ir baitu vai oktetu secība
- PostgreSQL ir tīkla adreses tips, kas palīdz optimizēt tīkla datu glabāšanu
- Teksta meklēšana PostgreSQL datu struktūras ir izstrādātas, lai atbalstītu pilnteksta meklēšanu
- Datums / laiks PSQL datu tipi ir informācija par datumu un laiku dažādos formātos
- Būla lauka Postgres lauku tipos var būt trīs vērtības 1. Patiesa 2. Nepatiesa 3. Null
- Ģeometriskie PostgreSQL datu tipi attēlo divdimensiju telpiskos objektus
- Uzskaitītie datu tipi PostgreSQL ir noderīgi, lai attēlotu reti mainīgu informāciju, piemēram, valsts kodu vai filiāles ID
- Universally Unique Identified (UUID) ir 128 bitu lielums, ko ģenerē algoritms
- PostgreSQL ir daudz īpaša mērķa ierakstu, kurus sauc par pseidotipiem
- Vislabāk ir izmantot teksta datu tipu, ja vien nevēlaties ierobežot ievadi