PostgreSQL pakub kasutajatele rikkalikku kohalike andmetüüpide komplekti. Kasutajad saavad käsu CREATE TYPE abil uusi tüüpe lisada. See muudab päringud ka lihtsamaks ja loetavamaks.
Andmetüübid PostgreSQL-is
PostgreSQL toetab järgmisi andmetüüpe:
- Teksti tüübid
- Numbrilised tüübid
- Kuupäevad ja kellaajad
- XML
- JSON
- Boolean
- Bitid
- Binaarandmed
- Võrk
- Massiivid
- Looge oma andmetüüp
- Boolean
- Ajaline
- UUID
- Massiiv
- JSON
- Spetsiaalsed andmetüübid võrguaadressi ja geomeetriliste andmete salvestamiseks.
Uurime üksikasjalikult PostgreSQL-i andmetüüpe
- Tähemärgi andmetüübid
- Numbrilised andmetüübid
- Binaarsed andmetüübid
- Võrgu aadressi tüüp
- Tekstiotsingu tüüp
- Kuupäeva / kellaaja andmetüübid
- Loogiline tüüp
- Geomeetrilised andmetüübid
- Loendatud tüübid
- Vahemiku tüüp
- UUID tüüp
- XML-tüüp
- JSON-tüüp
- Pseudotüübid
Tähemärgi andmetüübid
PostgreSQL toetab tekstiväärtuste salvestamiseks märkide andmetüüpe. PostgreSQL ehitab samadest sisestruktuuridest välja andmetüübid. PostgreSQL pakub kolme tähemärgi andmetüüpi: CHAR (n), VARCHAR (n) ja TEXT.
Nimi | Kirjeldus |
---|---|
varchar (n) | Võimaldab deklareerida muutuva pikkusega piirangut |
Char (n) | Fikseeritud pikkusega, tühi polsterdatud |
Tekst | Use saab seda andmetüüpi kasutada piiramatu pikkusega muutuja deklareerimiseks |
Numbrilised andmetüübid
PostgreSQL toetab kahte erinevat tüüpi numbreid:
- Täisarvud
- Ujuvnumbrid
Nimi | Kaupluse suurus | Vahemik |
---|---|---|
väike | 2 baiti | -32768 kuni +32767 |
täisarv | 4 baiti | -2147483648 kuni +2147483647 |
bigint | 8 baiti | -9223372036854775808 kuni 9223372036854775807 |
kümnendkoht | muutuv | Kui kuulutasite selle kümnendkohaks, on andmetüüp vahemikus 131072 numbrit enne koma kuni 16383 numbrit pärast koma |
numbriline | muutuv | Kui kuulutate selle numbriks, võite enne koma lisada numbri kuni 131072, kuni koma pärast 16383 numbrit |
päris | 4 baiti | 6 kümnendkoha täpsusega |
topelt | 8 baiti | 15 kümnendkoha täpsusega |
Binaarsed andmetüübid
Binaarne string on oktettide või baitide jada. Binaarsed Postgresi andmetüübid jagunevad kahel viisil.
- Binaarsed stringid võimaldavad salvestada nullväärtusega koefitsiente
- Mittetrükitavad oktetid
Märgistringid ei võimalda nulsi oktette ning keelavad ka kõik muud okteti väärtused ja järjestused, mis on andmebaasi märgistiku kodeerimise reeglite kohaselt valed.
Nimi | Hoidla suurus | Kirjeldus |
---|---|---|
Bait | 1 kuni 4 baiti pluss binaarse stringi suurus | Muutuva pikkusega kahendstring |
Võrgu aadressi tüüp
Paljud rakendused salvestavad võrguteavet, näiteks kasutajate IP-aadresse või
andurid. PostgreSQL-il on kolm kohalikku tüüpi, mis aitavad teil võrguandmeid optimeerida.
Nimi | Suurus | Kirjeldus |
---|---|---|
siider | 7 või 19 baiti | IPV4 ja IPv6 võrgud |
Inet | 7 või 19 baiti | IPV4 ja IPV5 host ja võrgud |
macaddr | 6 baiti | MAC-aadressid |
Võrguaadressitüüpide kasutamisel on järgmised eelised
- Salvestusruumi kokkuhoid
- Sisendvigade kontrollimine
- Funktsioonid nagu andmete otsimine alamvõrgu kaudu
Tekstiotsingu tüüp
PostgreSQL pakub kahte andmetüüpi, mis on mõeldud täistekstiotsingu toetamiseks. Täistekstiotsing otsib loomulikus keeles dokumentide kogu, et otsida päringule kõige paremini vastavaid dokumente.
- Tsvektori tekstiotsing PostgreSQL muutuja tüübid tähistavad teksti tekstiotsinguks optimeeritud kujul
- Päringu tüübi tekstotsing salvestab otsitavad märksõnad
Kuupäeva / kellaaja andmetüübid
PostgreSQL ajatempel pakub teise täpsuse asemel mikrosekundilist täpsust. Lisaks on teil võimalus salvestada ka ajavööndiga või ilma. PostgreSQL teisendab sisendi ajavööndiga ajavööndi UTC-ks ja salvestab selle.
Kuupäeva ja kellaaja sisestamine on lubatud erinevas vormingus, sealhulgas traditsiooniline Postgres, ISO 8601. SQL-iga ühilduv jne
PostgreSQL toetab päevade / kuu / aasta tellimist. Toetatud vormingud on DMY, MDY, YMD
Ajalised andmetüübid
Nimi | Suurus | Vahemik | Resolutsioon |
---|---|---|---|
Ajatempel ilma ajavööndita | 8 baiti | 4713 eKr kuni 294276 pKr | 1 mikrosekund / 14 numbrit |
Ajatempel ajavööndiga | 8 baiti | 4713 eKr kuni 294276 pKr | 1 mikrosekund / 14 numbrit |
kuupäev | 4 baiti | 4713 eKr kuni 294276 pKr | Üks päev |
Ajavööndita aeg | 8 baiti | 00:00:00 kuni 24:00:00 | 1 mikrosekund / 14 numbrit |
Aeg ajavööndiga | 12 baiti | 00:00:00 + 1459 kuni 24: 00-1459 | 1 mikrosekund / 14 numbrit |
Intervall | 12 baiti | -178000000 kuni 178000000 aastat | 1 mikrosekund / 14 numbrit |
Näited:
Sisend | Kirjeldus |
---|---|
2025-09-07 | ISO 8601, 7. september mis tahes kuupäevastiiliga (soovitatav formaat) |
7. september 2025 | 7. september mis tahes kuupäevastiiliga |
7.92525 | 7. september MDY-ga, 9. juuli DMY-ga |
7.9.25 | 7. september 2025 koos MDY-ga |
2025-september-7 | 7. september mis tahes kuupäevastiiliga |
Sept-7-2018 | 7. september mis tahes kuupäevastiiliga |
7. september-25 | 7. september 2025 koos YMD-ga |
20250907 | ISO 8601,7 september 20225 mis tahes režiimis |
2025.250 | aasta ja aasta, antud juhul 7. september 2025 |
J25250 | Juliani kuupäev |
Aeg / aeg ajavööndi sisendiga
Sisend | Kirjeldus |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Sama mis 11:19 |
23:19 | sama mis 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, sama mis 23:19 EST |
23:19 EST | ajavöönd on määratud EST, sama mis 23:19 EST |
Loogiline tüüp
Loogiline andmetüüp mahub
- Tõsi
- Vale
- null
väärtused.
Boole'i andmetüübiga veeru deklareerimiseks kasutate bool- või boolean- märksõna.
Kui sisestate väärtused boolean veergu, teisendab Postgre väärtused sarnaseks
- Jah
- y
- 1
- t
- tõsi
sisse 1.
Kuigi väärtused meeldivad
- Ei
- N
- 0
- F
- Vale
teisendatakse 0-ks
Andmete valimise ajal teisendatakse väärtused uuesti tagasi jah, true, y jne.
Geomeetrilised andmetüübid
Geomeetrilised andmetüübid tähistavad kahemõõtmelisi ruumiobjekte. Need aitavad teha selliseid toiminguid nagu pööramine, skaleerimine, tõlkimine jne.
Nimi | Ladustamise suurus | Esindus | Kirjeldus |
---|---|---|---|
Punkt | 16 baiti | Punkt lennukil | (x, y) |
Rida | 32 baiti | Lõputu rida | ((xl.yl). (x2.y2)) |
Lseg | 32 baiti | Lõplik joone segment | ((xl.yl). (x2.y2)) |
Kast | 32 baiti | Ristkülikukujuline kast | ((xl.yl). (x2.y2)) |
Tee | 16n + 16n baiti | Tee sulgemine ja avamine | ((xl.yl),…) |
Hulknurk | 40 + 16n baiti | Hulknurk | [(xl.yl)….] |
Ring | 24 baiti | Ring | <(xy) .r> (keskpunkt ja raadius) |
Loendatud tüübid
Loendatud PostgreSQL andmetüüp on kasulik harva muutuva teabe, näiteks riigikoodi või filiaali ID esitamiseks. Andmete terviklikkuse tagamiseks on loenditüüp esindatud võõrvõtmetega tabelis.
Näide:
Juuksevärv on demograafilises andmebaasis üsna staatiline
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Vahemiku tüüp
Paljud ärirakendused nõuavad andmeid vahemikes. Tavaliselt on vahemike käsitlemiseks määratletud kaks veergu (näiteks alguskuupäev, lõppkuupäev). See on nii ebaefektiivne kui ka raskesti hooldatav.
Postgre on vahemike tüübid ehitanud järgmiselt
- int4range - täisarvu vahemiku kuvamine
- int8range - bigindi kuvamisvahemik
- numrange - näitab arvulist vahemikku
- tstrange - aitab teil ajatemplit kuvada ilma ajavööndita
- kummaline - võimaldab kuvada ajatemplit koos ajavööndiga
- kuupäevavahemik - kuupäevavahemik
UUID tüüp
Universally Unique Identifications (UUID) on algoritmi genereeritud 128-bitine suurus. On väga ebatõenäoline, et sama identifikaatori genereerib teine inimene maailmas sama algoritmi kasutades. Seetõttu on hajutatud süsteemide jaoks need identifikaatorid ideaalne valik, kuna see pakub ainulaadsust ühes andmebaasis. UUID kirjutatakse väikeste tähtedega kuueteistkümnendkohtade rühmana, kusjuures erinevad rühmad on eraldatud sidekriipsudega.
PostgreSQL-l on algupärane UUID-tüüpi andmetüüp, mis kulutab 16 baiti salvestusruumi ... UUID on ideaalne andmetüüp primaarvõtmete jaoks.
Näide:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre aktsepteerib ka UUID-sisendite alternatiivseid vorme, nagu kõik suurtähed, sidekriipsud, traksid jne.
XML-tüüp
PostgreSQL võimaldab teil salvestada XML-andmeid andmetüüpi, kuid see pole midagi muud kui tekst-andmetüübi laiendus. Kuid eeliseks on see, et see kontrollib sisendi XML-i vormindamist.
Näide:
XMLPARSE (DOCUMENT '') Data Type …
JSON-tüüp
JSON-andmete salvestamiseks pakub PostgreSQL kahte tüüpi andmeid
- JSON
- JSONB
json | Jsonb |
---|---|
JSON-i valideerimisega teksti andmetüübi lihtne laiendus | JSON-andmete binaarne esitus |
Sisestamine on kiire, kuid andmete otsimine suhteliselt aeglane. | Sisestamine on aeglane, kuid valige (andmete otsimine on kiire) |
Salvestab sisestatud andmed täpselt selliselt, nagu see sisaldab tühimärki. | Toetab indekseerimist. Võib optimeerida tühiku, et muuta see kiiremaks. |
Uuesti töötlemine andmete otsimisel | Andmete otsimisel pole vaja ümbertöötlemist |
Kõige laialdasemalt kasutatav JSON-i andmetüüp kasutas meid jsonb, kui JSON-i andmetüübi kasutamiseks pole erilist vajadust.
Näide:
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}');
Pseudotüübid
PostgreSQL-is on palju eriotstarbelisi kirjeid, mida nimetatakse pseudotüüpideks. PostgreSQL-i veerutüüpidena ei saa kasutada pseudotüüpe. Neid kasutatakse deklareerimiseks või funktsiooni argumendi või tagastuse tüübiks.
Kõik saadaolevad pseudotüübid on abiks olukordades, kus funktsiooni käitumisdokumendid ei vasta lihtsalt konkreetse SQL-i andmetüübi väärtuse võtmisele või tagastamisele.
Nimi | Kirjeldus |
---|---|
Ükskõik | Funktsioon aktsepteerib kõiki sisestatud andmetüüpe. |
Massiiv | Funktsioon aktsepteerib kõiki massiivi andmetüüpe. |
Mis tahes element | Funktsioon aktsepteerib mis tahes andmetüüpi. |
Igasugune enum | Funktsioon aktsepteerib kõiki loenditüüpe. |
Nonarray | Funktsioon aktsepteerib kõiki mittemassiivseid andmetüüpe. |
Cstring | Funktsioon aktsepteerib või tagastab nullotsaga C-stringi. |
Sisemine | Sisemine funktsioon aktsepteerib või tagastab serveri sisemise andmetüübi. |
Keelekäitleja | Deklareeritakse, et see on keelekäitleja. |
Salvesta | Leidke funktsioon, mis tagastab määratlemata rea tüübi. |
Käivita | Päästiku tagastamiseks kasutatakse päästiku funktsiooni. |
On oluline, et seda funktsiooni kasutav kasutaja peaks veenduma, et funktsioon käituks turvaliselt, kui argumenditüübina kasutatakse pseudotüüpi.
Andmetüüpide kasutamise parimad tavad
- Kui soovite sisestust piirata, kasutage andmetüüpi „tekst”
- Ärge kunagi kasutage "char".
- Täisarvud kasutavad "int". Kasutage biginti ainult siis, kui teil on tõesti suured arvud
- Kasutage "numbrit" peaaegu alati
- Kui teil on IEEE 754 andmeallikas, kasutage PostgreSQL-is ujukit
Kokkuvõte
- PostgreSQL pakub kasutajatele rikkalikku kohalike andmetüüpide komplekti
- PostgreSQL toetab tekstiväärtuste salvestamiseks märkide andmetüüpe
- PostgreSQL toetab kahte erinevat tüüpi numbreid: 1. täisarvud, 2. ujukomaarvud
- Binaarne string on baitide või oktettide jada
- PostgreSQL-il on võrguaadressi tüüp, mis aitab teil võrguandmete salvestamist optimeerida
- Tekstiotsing PostgreSQL-i andmestruktuurid on loodud täistekstiotsingu toetamiseks
- Kuupäev / kellaaeg PSQL andmetüübid võimaldavad kuupäeva ja kellaaega teavet erinevates vormingutes
- Boole'i väljad Postgres võivad sisaldada kolme väärtust 1. Tõene 2. Vale 3. Null
- Geomeetrilised PostgreSQL andmetüübid tähistavad kahemõõtmelisi ruumiobjekte
- PostgreSQL-is loetletud andmetüübid on kasulikud harva muutuva teabe, näiteks riigikoodi või filiaali ID esitamiseks
- Universally Unique Identifications (UUID) on algoritmi genereeritud 128-bitine suurus
- PostgreSQL-is on palju eriotstarbelisi kirjeid, mida nimetatakse pseudotüüpideks
- Parim tava on kasutada teksti tüüpi andmetüüpi, kui te ei soovi sisendit piirata