PostgreSQL andmetüübid: märk - Numbriline - Binaarne - Boolean

Lang L: none (table-of-contents):

Anonim

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

  1. Salvestusruumi kokkuhoid
  2. Sisendvigade kontrollimine
  3. 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

  1. JSON
  2. 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