„PostgreSQL“ vartotojams siūlo gausų savųjų duomenų tipų rinkinį. Vartotojai gali pridėti naujų tipų naudodami komandą CREATE TYPE. Taip pat užklausos tampa paprastesnės ir suprantamesnės.
Duomenų tipai „PostgreSQL“
„PostgreSQL“ palaiko šiuos duomenų tipus:
- Teksto tipai
- Skaitmeniniai tipai
- Datos ir laikai
- XML
- JSON
- Būlio
- Bitai
- Dvejetainiai duomenys
- Tinklas
- Masyvai
- Sukurkite savo duomenų tipą
- Būlio
- Laiko
- UUID
- Masyvas
- JSON
- Specialūs duomenų tipai, skirti saugoti tinklo adresą ir geometrinius duomenis.
Panagrinėkime išsamiai „PostgreSQL“ duomenų tipus
- Simbolių duomenų tipai
- Skaitmeniniai duomenų tipai
- Dvejetainiai duomenų tipai
- Tinklo adreso tipas
- Teksto paieškos tipas
- Datos / laiko duomenų tipai
- Būlio tipas
- Geometriniai duomenų tipai
- Išvardinti tipai
- Diapazono tipas
- UUID tipas
- XML tipas
- JSON tipas
- Pseudo tipai
Simbolių duomenų tipai
„PostgreSQL“ palaiko simbolių duomenų tipus teksto reikšmėms saugoti. „PostgreSQL“ sukuria simbolių duomenų tipus iš tų pačių vidinių struktūrų. „PostgreSQL“ siūlo tris simbolių duomenų tipus: CHAR (n), VARCHAR (n) ir TEXT.
vardas | apibūdinimas |
---|---|
varcharas (n) | Leidžia deklaruoti kintamą ilgį su riba |
Char (n) | Fiksuoto ilgio, tuščias paminkštintas |
Tekstas | „Use“ gali naudoti šį duomenų tipą neriboto ilgio kintamajam deklaruoti |
Skaitmeniniai duomenų tipai
„PostgreSQL“ palaiko du skirtingus numerių tipus:
- Sveikieji skaičiai
- Slankiųjų kablelių skaičiai
vardas | Parduotuvės dydis | diapazonas |
---|---|---|
smallint | 2 baitai | -32768 iki +32767 |
sveikasis skaičius | 4 baitai | -2147483648 iki +2147483647 |
bigint | 8 baitai | -9223372036854775808 iki 9223372036854775807 |
po kablelio | kintamasis | Jei paskelbėte, kad dešimtainis, duomenų tipas svyruoja nuo 131072 skaitmenų prieš kablelį iki 16383 skaitmenų po kablelio |
skaitinis | kintamasis | Jei paskelbsite jį skaičiumi, galite įtraukti skaičių iki dešimtainio kablelio iki 131072 skaitmenų iki 16383 skaitmenų po kablelio |
tikras | 4 baitai | 6 skaitmenų po kablelio tikslumas |
dvigubai | 8 baitai | 15 skaitmenų po kablelio tikslumas |
Dvejetainiai duomenų tipai
Dvejetainė eilutė yra oktetų arba baitų seka. Dvejetainiai „Postgres“ duomenų tipai skirstomi dviem būdais.
- Dvejetainės eilutės leidžia išsaugoti nulinės vertės šansus
- Nespausdinami oktetai
Simbolių eilutės neleidžia nulinių oktetų, taip pat neleidžia kitų okteto reikšmių ir sekų, kurios yra neteisingos pagal duomenų bazės simbolių rinkinio kodavimo taisykles.
vardas | Saugyklos dydis | apibūdinimas |
---|---|---|
Baitas | 1–4 baitai plius dvejetainės eilutės dydis | Kintamo ilgio dvejetainė eilutė |
Tinklo adreso tipas
Daugelyje programų saugoma tinklo informacija, pvz., Vartotojų IP adresas arba
jutikliai. „PostgreSQL“ yra trys vietiniai tipai, kurie padeda optimizuoti tinklo duomenis.
vardas | Dydis | apibūdinimas |
---|---|---|
sidras | 7 arba 19 baitų | IPV4 ir IPv6 tinklai |
Inet | 7 arba 19 baitų | IPV4 ir IPV5 pagrindiniai kompiuteriai ir tinklai |
macaddr | 6 baitai | MAC adresai |
Tinklo adresų tipų naudojimas turi šiuos privalumus
- Sandėliavimo vietos taupymas
- Įvesties klaidų tikrinimas
- Tokios funkcijos kaip duomenų paieška pagal potinklį
Teksto paieškos tipas
„PostgreSQL“ pateikia du duomenų tipus, kurie skirti palaikyti paiešką visame tekste. Viso teksto paieška ieškoma natūralios kalbos dokumentų rinkinyje, kad būtų galima ieškoti tų, kurie geriausiai atitinka užklausą.
- „Tsvector“ teksto paieška „PostgreSQL“ kintamųjų tipai reiškia dokumentą forma, optimizuota teksto paieškai
- Užklausos tipo teksto paieška išsaugo raktinius žodžius, kurių reikia ieškoti
Datos / laiko duomenų tipai
„PostgreSQL“ laiko žyma siūlo vietoj antrojo tikslumo mikrosekundžių tikslumą. Be to, jūs taip pat turite galimybę laikyti su laiko juosta arba be jos. „PostgreSQL“ laiko žymę su laiko juosta konvertuos į UTC įvesties metu ir išsaugos.
Datos ir laiko įvedimas priimamas įvairiu formatu, įskaitant tradicinius „Postgres“, ISO 8601. Su SQL suderinamas ir kt.
„PostgreSQL“ palaiko dienos / mėnesio / metų užsakymą. Palaikomi formatai yra DMY, MDY, YMD
Laikini duomenų tipai
vardas | Dydis | diapazonas | Rezoliucija |
---|---|---|---|
Laiko žymė be laiko juostos | 8 baitai | 4713 m. Pr. M. Iki 294276 m. Po Kr | 1 mikrosekundė / 14 skaitmenų |
Laiko žymė su laiko juosta | 8 baitai | 4713 m. Pr. M. Iki 294276 m. Po Kr | 1 mikrosekundė / 14 skaitmenų |
data | 4 baitai | 4713 m. Pr. M. Iki 294276 m. Po Kr | Vieną dieną |
Laikas be laiko juostos | 8 baitai | Nuo 00:00:00 iki 24:00:00 | 1 mikrosekundė / 14 skaitmenų |
Laikas su laiko juosta | 12 baitų | 00:00:00 + 1459–24: 00–1459 | 1 mikrosekundė / 14 skaitmenų |
Intervalas | 12 baitų | -178000000 iki 178000000 metų | 1 mikrosekundė / 14 skaitmenų |
Pavyzdžiai:
Įvestis | apibūdinimas |
---|---|
2025-09-07 | ISO 8601, rugsėjo 7 d., Naudojant bet kokį datos stilių (rekomenduojamas formatas) |
2025 m. Rugsėjo 7 d | Rugsėjo 7 d. Su bet kokiu datos stiliumi |
25/09/2025 | Rugsėjo 7 d. Su MDY, liepos 9 d. - su DMY |
Rugsėjo 9 d | 2025 m. Rugsėjo 7 d. Su MDY |
2025 m. - rugsėjo 7 d | Rugsėjo 7 d. Su bet kokiu datos stiliumi |
2018 rugsėjo 7 d | Rugsėjo 7 d. Su bet kokiu datos stiliumi |
Rugsėjo 7 d. - 25 d | 2025 m. Rugsėjo 7 d. Su YMD |
20250907 | ISO 8601,7, 20225 m. Rugsėjo mėn., Bet kokiu režimu |
2025.250 | metai ir metų diena, šiuo atveju, 2025 m. rugsėjo 7 d |
J25250 | Džuliano data |
Laikas / laikas su laiko juostos įvestimi
Įvestis | apibūdinimas |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Tas pats kaip 11:19 |
23:19 | tas pats kaip 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, tas pats, kas 23:19 EST |
23:19 EST | laiko juosta nurodyta kaip EST, ta pati kaip 23:19 EST |
Būlio tipas
Būlo duomenų tipas gali būti
- Tiesa
- Klaidinga
- niekinis
vertybes.
Jūs naudojate bool ar boolean raktažodį deklaruoti stulpelį su loginis tipas.
Kai įterpiate reikšmes į loginį stulpelį, „Postgre“ konvertuoja tokias vertes kaip
- Taip
- y
- 1
- t
- tiesa
į 1.
Nors vertybės patinka
- Ne
- N
- 0
- F
- Klaidinga
yra konvertuojami į 0
Renkantis duomenis, reikšmės vėl konvertuojamos į taip, tiesa, y ir kt.
Geometriniai duomenų tipai
Geometriniai duomenų tipai rodo dvimatį erdvinį objektą. Jie padeda atlikti tokias operacijas kaip pasukimas, mastelio keitimas, vertimas ir kt.
vardas | Saugyklos dydis | Atstovavimas | apibūdinimas |
---|---|---|---|
Taškas | 16 baitų | Taškas lėktuve | (x, y) |
Linija | 32 baitai | Begalinė linija | ((xl.yl). (x2.y2)) |
Lseg | 32 baitai | Ribotas linijos segmentas | ((xl.yl). (x2.y2)) |
Dėžė | 32 baitai | Stačiakampė dėžutė | ((xl.yl). (x2.y2)) |
Kelias | 16n + 16n baitai | Uždaryti ir atidaryti kelią | ((xl.yl),…) |
Poligonas | 40 + 16n baitų | Poligonas | [(xl.yl)….] |
Apskritimas | 24 baitai | Apskritimas | <(xy) .r> (centro taškas ir spindulys) |
Išvardinti tipai
Išvardytas „PostgreSQL“ duomenų tipas yra naudingas retai besikeičiančiai informacijai, pavyzdžiui, šalies kodui ar filialo ID, pateikti. Surašytų duomenų tipas pateikiamas lentelėje su svetimais raktais, kad būtų užtikrintas duomenų vientisumas.
Pavyzdys:
Plaukų spalva yra gana statiška demografinėje duomenų bazėje
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Diapazono tipas
Daugeliui verslo programų reikia duomenų intervalais. Paprastai nustatomi du stulpeliai (pavyzdžiui: pradžios data, pabaigos data), kad būtų galima valdyti diapazonus. Tai yra neefektyvu ir sunku išlaikyti.
„Postgre“ sukūrė diapazonų tipus taip
- int4range - rodomas sveiko skaičiaus diapazonas
- int8range - rodomas „bigint“ diapazonas
- numrange - rodo skaitinį diapazoną
- tstrange - padeda rodyti laiko žymę be laiko juostos
- keista - leidžia rodyti laiko žymę su laiko juosta
- dienų seka - dienų seka
UUID tipas
Visuotinai unikalus identifikavimas (UUID) yra 128 bitų dydis, kurį sukuria algoritmas. Labai mažai tikėtina, kad tą patį identifikatorių sugeneruos kitas pasaulio asmuo, naudodamas tą patį algoritmą. Štai kodėl paskirstytoms sistemoms šie identifikatoriai yra idealus pasirinkimas, nes jie siūlo unikalumą vienoje duomenų bazėje. UUID rašomas kaip mažųjų raidžių šešioliktainių skaitmenų grupė, įvairias grupes skiriant brūkšneliais.
„PostgreSQL“ turi vietinį UUID duomenų tipą, kuris sunaudoja 16 baitų atminties ... UUID yra idealus duomenų tipas pirminiams raktams.
Pavyzdys:
d5f28c97-b962-43be-9cf8-ca1632182e8e
„Postgre“ taip pat priima alternatyvias UUID įvesties formas, pavyzdžiui, visas didžiąsias ir mažąsias raides, be brūkšnių, petnešų ir kt.
XML tipas
„PostgreSQL“ leidžia saugoti XML duomenis duomenų tipe, tačiau tai yra ne kas kita, kaip tik teksto duomenų tipo išplėtimas. Bet privalumas yra tai, kad jis tikrina, ar įvesties XML yra gerai suformuota.
Pavyzdys:
XMLPARSE (DOCUMENT '') Data Type …
JSON tipas
JSON duomenims saugoti „PostgreSQL“ siūlo 2 duomenų tipus
- JSON
- JSONB
Json | Jsonb |
---|---|
Paprastas teksto duomenų tipo išplėtimas su JSON patvirtinimu | Dvejetainis JSON duomenų pateikimas |
Įterpimas yra greitas, bet duomenų paieška gana lėta. | Įterpimas lėtas, bet pasirinkite (duomenų paieška greita) |
Įrašyti duomenys išsaugomi tiksliai taip, kaip yra tarpai. | Palaiko indeksavimą. Gali optimizuoti spragas, kad jas būtų galima greičiau išgauti. |
Duomenų gavimo perdirbimas | Duomenų paieškai nereikia perdirbti |
Plačiausiai naudojamas JSON duomenų tipas naudojo mus „jsonb“, nebent yra tam tikras specializuotas poreikis naudoti JSON duomenų tipą.
Pavyzdys:
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 tipai
„PostgreSQL“ yra daug specialios paskirties įrašų, kurie vadinami pseudo tipais. Negalite naudoti pseudo tipų kaip „PostgreSQL“ stulpelių tipų. Jie naudojami deklaruoti arba funkcijos argumentą ar grąžinimo tipą.
Kiekvienas iš galimų pseudo tipų yra naudingas tais atvejais, kai funkcijos elgsenos dokumentai neatitinka paprasčiausio konkretaus SQL duomenų tipo vertės paėmimo ar grąžinimo.
vardas | apibūdinimas |
---|---|
Bet koks | Funkcija priima visus įvesties duomenų tipus. |
Masyvas | Funkcija priima bet kokį masyvo duomenų tipą. |
Bet koks elementas | Funkcija priima bet kokį duomenų tipą. |
Bet kokia enum | Funkcija priima bet kokį enum duomenų tipą. |
Nonarray | Funkcija priima bet kokį ne masyvo duomenų tipą. |
Cstring | Funkcija priima arba grąžina nulinę pabaigą C eilutę. |
Vidinis | Vidinė funkcija priima arba grąžina vidinio serverio duomenų tipą. |
Kalbos_tvarkytojas | Skelbiama, kad jis grąžins kalbos tvarkytoją. |
Įrašyti | Raskite funkciją, kuri grąžina nenurodytą eilutės tipą. |
Paleiskite | Trigerio funkcija naudojama norint grąžinti trigerį. |
Svarbu, kad vartotojas, kuris naudojasi šia funkcija, turėtų įsitikinti, kad funkcija elgsis saugiai, kai pseudo tipas naudojamas kaip argumento tipas.
Geriausia duomenų tipų naudojimo praktika
- Naudokite „teksto“ duomenų tipą, nebent norite apriboti įvestį
- Niekada nenaudokite „char“.
- Sveikieji skaičiai naudoja „int“. „Bigint“ naudokite tik tada, kai turite tikrai daug skaičių
- Beveik visada naudokite „skaitmeninius“
- „PostgreSQL“ naudokite „float“, jei turite IEEE 754 duomenų šaltinį
Santrauka
- „PostgreSQL“ vartotojams siūlo gausų savųjų duomenų tipų rinkinį
- „PostgreSQL“ palaiko simbolių duomenų tipus teksto reikšmėms saugoti
- „PostgreSQL“ palaiko du skirtingus skaičių tipus: 1. Sveikieji skaičiai, 2. Kintamųjų skaičių skaičiai
- Dvejetainė eilutė yra baitų arba oktetų seka
- „PostgreSQL“ turi tinklo adreso tipą, kuris padės optimizuoti tinklo duomenų saugojimą
- Teksto paieška „PostgreSQL“ duomenų struktūros yra sukurtos palaikyti viso teksto paiešką
- Data / laikas PSQL duomenų tipai leidžia informaciją apie datą ir laiką įvairiais formatais
- Boolean Postgres laukų tipuose gali būti trys reikšmės: 1. Tiesa 2. Netiesa 3. Nulinė
- Geometriniai „PostgreSQL“ duomenų tipai atspindi dvimatį erdvinį objektą
- „PostgreSQL“ išvardyti duomenų tipai yra naudingi retai besikeičiančiai informacijai, pvz., Šalies kodui ar filialo ID, pateikti
- Visuotinai unikalus identifikavimas (UUID) yra 128 bitų dydis, kurį sukuria algoritmas
- „PostgreSQL“ yra daug specialios paskirties įrašų, kurie vadinami pseudo tipais
- Geriausia naudoti „teksto“ duomenų tipą, nebent norite apriboti įvestį