PostgreSQL Andmetüübid: bait, arv, märk, kahend

PostgreSQL pakub kasutajatele rikkalikku natiivsete andmetüüpide komplekti. Kasutajad saavad lisada uusi tüüpe käsu CREATE TYPE abil. Samuti muudab see päringud lihtsamaks ja loetavamaks.

Andmetüübid sisse PostgreSQL

PostgreSQL toetab järgmisi andmetüüpe:

  • Tekstitüübid
  • Numbrilised tüübid
  • Kuupäevad ja ajad
  • XML
  • JSON
  • Boolean
  • Bitti
  • Binaarandmed
  • võrk
  • Massiraadid
  • Looge oma andmetüüp
  • Boolean
  • Ajutine
  • UUID
  • Array
  • JSON
  • Spetsiaalsed andmetüübid võrguaadressi ja geomeetriliste andmete salvestamiseks.

Õpime PostgreSQL üksikasjalikult andmetüüpe

Tähemärkide andmetüübid

PostgreSQL toetab tähemärkide andmetüüpe tekstiväärtuste salvestamiseks. PostgreSQL ehitab samadest sisemistest struktuuridest välja märgi andmetüübid. PostgreSQL pakub kolme märgi andmetüüpi: CHAR(n), VARCHAR(n) ja TEXT.

Nimi Kirjeldus
varchar (n) Võimaldab deklareerida muutuva pikkusega piiranguid
Char(n) Fikseeritud pikkusega, tühi polsterdatud
Tekst Kasutamine võib seda andmetüüpi kasutada piiramatu pikkusega muutuja deklareerimiseks

Numbrilised andmetüübid

PostgreSQL toetab kahte erinevat tüüpi numbreid:

  • Täisarvud
  • Ujukomanumbrid
Nimi Kaupluse suurus Valik
smallint 2 baiti -32768 kuni + 32767
täisarv 4 baiti -2147483648 kuni + 2147483647
bigint 8 baiti -9223372036854775808 et 9223372036854775807
Kümnendkoht muutuja Kui deklareerisite selle kümnendkohana, ulatub andmetüüp 131072 numbrist enne koma kuni 16383 numbrini pärast koma
arv- muutuja Kui deklareerite selle arvuna, võite lisada arvu kuni 131072 numbrini enne koma kuni 16383 numbrini pärast koma
reaalne 4 baiti 6 kümnendkoha täpsus
kahekordistada 8 baiti 15 kümnendkoha täpsus

Binaarsed andmetüübid

Binaarne string on oktettide või baitide jada. Binaarsed Postgresi andmetüübid jagunevad kahel viisil.

  • Binaarsed stringid võimaldavad salvestada nullväärtuse koefitsiente
  • Mitteprinditavad oktettid

Tähemärgistringid ei luba nulloktetti ega luba ka muid oktetiväärtusi ja -jadasid, mis on andmebaasi märgistiku kodeerimisreeglite kohaselt kehtetud.

Nimi Ladustamise suurus Kirjeldus
Bait 1 kuni 4 baiti pluss binaarstringi suurus Muutuva pikkusega kahendstring

Võrguaadressi tüüp

Paljud rakendused salvestavad võrguteavet, näiteks kasutajate või andurite IP-aadresse. PostgreSQL sellel on kolm natiivset tüüpi, mis aitavad teil võrguandmeid optimeerida.

Nimi SUURUS Kirjeldus
siider 7 või 19 baiti IPV4 ja IPv6 võrgustikud
Inet 7 või 19 baiti IPV4 ja IPV5 host ja võrgud
macaddr 6 baiti MAC -aadressid

Võrguaadressi tüüpide kasutamisel on järgmised eelised

  1. Salvestusruumi kokkuhoid
  2. Sisendvigade kontrollimine
  3. Funktsioonid, nagu andmete otsimine alamvõrgu järgi

Tekstiotsingu tüüp

PostgreSQL pakub kahte andmetüüpi, mis on loodud täistekstiotsingu toetamiseks. Täistekstiotsing on otsimine loomulike keelte dokumentide kogust, et otsida neid, mis päringule kõige paremini vastavad.

  • Tsvector tekstiotsing PostgreSQL muutujatüübid esindavad dokumenti tekstiotsinguks optimeeritud kujul
  • Päringu tüüpi tekstiotsing salvestab otsimist vajavad märksõnad

Kuupäeva/kellaaja andmetüübid

PostgreSQL ajatempel pakub sekundilise täpsuse asemel mikrosekundi täpsust. Lisaks on teil võimalus salvestada ajavööndiga või ilma. PostgreSQL teisendab sisendil ajatempli ajavööndiga UTC-ks ja salvestab selle.

Kuupäeva ja kellaaja sisestamist aktsepteeritakse erinevates vormingutes, sealhulgas traditsioonilises Postgres, ISO 8601. SQL-iga ühilduvas jne.

PostgreSQL toetab päeva/kuu/aasta järjestust. Toetatud vormingud on DMY, MDY, YMD

Ajalised andmetüübid

Nimi SUURUS Valik resolutsioon
Ajatempel ilma ajavööndita 8 baiti 4713 eKr kuni 294276 pKr 1 mikrosekund / 14 numbrit
Ajatempel koos ajavööndiga 8 baiti 4713 eKr kuni 294276 pKr 1 mikrosekund / 14 numbrit
andmed 4 baiti 4713 eKr kuni 294276 pKr Üks päev
Aeg ilma ajavööndita 8 baiti 00:00:00 to 24:00:00 1 mikrosekund / 14 numbrit
Aeg koos ajavööndiga 12 baiti 00:00:00 + 1459 kuni 24:00: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 vorming)
September 7, 2025 7. september mis tahes kuupäeva stiiliga
9/7/2025 7. september MDY-ga, 9. juuli DMY-ga
9/7/25 7. september 2025 koos MDY-ga
2025-Sep-7 7. september mis tahes kuupäeva stiiliga
September-7-2018 7. september mis tahes kuupäeva stiiliga
7-Sep-25 7. september 2025 koos YMD-ga
20250907 ISO 8601,7, 20225 september XNUMX mis tahes režiimis
2025.250 aasta ja aastapäev, 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 AM Sama mis 11:19
11: 19 PM sama mis 23:19
23: 19-3
23:19-03:00
231900-03
ISO 8601, sama mis 11:19 EST
23: 19 EST ajavöönd on määratud kui EST, sama mis 11:19 EST

Boole'i ​​tüüp

Boole'i ​​andmetüüp võib sisaldada

  • Tõsi
  • Vale
  • tühjaks

väärtused.

Sa kasutad a loll or loogiline märksõna, et deklareerida Boole'i ​​andmetüübiga veerg.

Kui sisestate väärtused tõeväärtuse veergu, teisendab Postgre sellised väärtused nagu

  • Jah
  • y
  • 1
  • t
  • tõsi

aastasse 1.

Kuigi väärtused nagu

  • Ei
  • N
  • 0
  • F
  • Vale

teisendatakse 0-ks

Andmete valimisel teisendatakse väärtused uuesti jah, tõene, y jne.

Geomeetrilised andmetüübid

Geomeetrilised andmetüübid esindavad kahemõõtmelisi ruumiobjekte. Need aitavad sooritada selliseid toiminguid nagu pööramine, skaleerimine, tõlkimine jne.

Nimi Ladustamise suurus esindus Kirjeldus
Punkt 16 baiti Punkt lennukis (x,y)
joon 32 baiti Lõpmatu rida ((xl.yl ).(x2.y2))
Lseg 32 baiti Lõpliku joone segment ((xl.yl ).(x2.y2))
Box 32 baiti Ristkülikukujuline Box ((xl.yl ).(x2.y2))
Tee 16n + 16n baiti Sulgege ja avage tee ((xl.yl),…)
hulknurk 40 + 16n baiti hulknurk [(xl.yl)….]
Ring 24 baiti Ring <(xy).r> (keskpunkt ja raadius)

Loetletud tüübid

Loendatud PostgreSQL andmetüüp on kasulik harva muutuva teabe (nt riigikoodi või filiaali ID) esitamiseks. Andmetüüp Loend on esitatud andmete terviklikkuse tagamiseks võõrvõtmetega tabelis.

Näide

Juuksevärv on demograafilises andmebaasis üsna staatiline

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Loetletud tüübid

Vahemiku tüüp

Paljud ärirakendused nõuavad andmeid vahemikes. Tavaliselt määratakse vahemike käsitlemiseks kaks veergu (näiteks: alguskuupäev, lõppkuupäev). See on nii ebaefektiivne kui ka raskesti hooldatav.

Postgre on ehitanud vahemiku tüübid järgmiselt

  • int4range — täisarvude vahemiku kuvamine
  • int8range — Bigint kuvamisvahemik
  • numbrivahemik – näitab numbrivahemikku
  • tstrange – Aitab kuvada ajatemplit ilma ajavööndita
  • kummaline — võimaldab kuvada ajatemplit koos ajavööndiga
  • kuupäevavahemik — kuupäevavahemik

UUID tüüp

Universally Unique Identifies (UUID) on 128-bitine suurus, mille genereerib algoritm. On väga ebatõenäoline, et teine ​​inimene maailmas sama algoritmi kasutades genereerib sama identifikaatori. Seetõttu on need identifikaatorid hajutatud süsteemide jaoks ideaalne valik, kuna need pakuvad unikaalsust ühes andmebaasis. UUID kirjutatakse väiketähtedega kuueteistkümnendnumbrite rühmana, kus erinevad rühmad on eraldatud sidekriipsudega.

PostgreSQL sellel on loomulik UUID andmetüüp, mis tarbib 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, näiteks suurtähti, sidekriipse, sulgusid jne.

XML tüüp

PostgreSQL võimaldab salvestada XML-andmeid andmetüübis, kuid see pole midagi muud kui teksti andmetüübi laiendus. Kuid eeliseks on see, et see kontrollib, kas sisend XML on hästi vormindatud.

Näide

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

JSON tüüp

JSON-andmete salvestamiseks PostgreSQL pakub 2 andmetüüpi

  1. JSON
  2. JSONB
Json Jsonb
Teksti andmetüübi lihtne laiendus JSON-valideerimisega JSON-andmete binaarne esitus
Sisestamine on kiire, kuid andmete otsimine on suhteliselt aeglane. Sisestamine on aeglane, kuid vali (andmete toomine on kiire)
Salvestab sisestatud andmed täpselt nii, nagu need on, sealhulgas tühik. Toetab indekseerimist. Võib optimeerida tühikuid, et otsingu kiirendada.
Taastöötlemine andmete otsimisel Andmete otsimisel pole vaja uuesti töötlemist

Kõige laialdasemalt kasutatav JSON-i andmetüüp kasutas meile jsonb-d, välja arvatud juhul, kui on vaja JSON-i andmetüüpi kasutada.

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 sisaldab palju eriotstarbelisi kirjeid, mida nimetatakse pseudotüüpideks. Pseudotüüpe ei saa kasutada kui PostgreSQL veergude tüübid. Neid kasutatakse funktsiooni argumendi või tagastustüübi deklareerimiseks.

Kõik saadaolevad pseudotüübid on abiks olukordades, kus funktsiooni käitumisdokumendid ei vasta lihtsalt konkreetse väärtuse võtmisele või tagastamisele SQL-i andmetüüp.

Nimi Kirjeldus
mistahes Funktsioon aktsepteerib kõiki sisendandmetüüpe.
Massiiv Funktsioon aktsepteerib mis tahes massiivi andmetüüpe.
Ükskõik milline element Funktsioon aktsepteerib mis tahes andmetüüpi.
Igasugune enum Funktsioon aktsepteerib mis tahes enum-andmetüüpe.
Nonarray Funktsioon aktsepteerib mis tahes massiivita andmetüüpe.
Cstring Funktsioon aktsepteerib või tagastab null-lõpuga C-stringi.
sisemine Sisemine funktsioon aktsepteerib või tagastab serverisisese andmetüübi.
Language_handler See deklareeritakse keelekäitleja tagastamiseks.
Rekord Leidke funktsioon, mis tagastab määramata reatüübi.
Trigger Päästiku tagastamiseks kasutatakse päästikufunktsiooni.

On oluline, et seda funktsiooni kasutav kasutaja peab veenduma, et funktsioon käitub turvaliselt, kui argumenditüübina kasutatakse pseudotüüpi.

Andmetüüpide kasutamise parimad tavad

  • Kasutage "teksti" andmetüüpi, kui te ei soovi sisestust piirata
  • Ärge kunagi kasutage sõna "char".
  • Täisarvud kasutavad sõna "int". Kasutage bigint ainult siis, kui teil on tõesti suured numbrid
  • Kasutage "numbrit" peaaegu alati
  • Kasutage ujukit PostgreSQL kui teil on IEEE 754 andmeallikas

kokkuvõte

  • PostgreSQL pakub kasutajatele rikkalikku natiivsete andmetüüpide komplekti
  • PostgreSQL toetab tähemärkide andmetüüpe tekstiväärtuste salvestamiseks
  • PostgreSQL toetab kahte erinevat tüüpi numbreid: 1. täisarvud, 2. ujukomaarvud
  • Binaarne string on baitide või oktettide jada
  • PostgreSQL on võrguaadressi tüüp, mis aitab teil võrguandmete salvestamist optimeerida
  • Tekstiotsing PostgreSQL andmestruktuurid on loodud täistekstiotsingu toetamiseks
  • Kuupäev/kellaaeg PSQL-i andmetüübid võimaldavad kuupäeva ja kellaaja teavet erinevates vormingutes
  • Boole'i ​​Postgresi väljatüübid võivad sisaldada kolme väärtust 1. Tõene 2. Väär 3. Null
  • geomeetriline PostgreSQL andmetüübid esindavad kahemõõtmelisi ruumiobjekte
  • Loetletud andmetüübid: PostgreSQL on kasulik harva muutuva teabe (nt riigikoodi või filiaali ID) esitamiseks
  • Universally Unique Identifies (UUID) on 128-bitine suurus, mille genereerib algoritm
  • PostgreSQL sisaldab palju eriotstarbelisi kirjeid, mida nimetatakse pseudotüüpideks
  • Kui te ei soovi sisestust piirata, on parim tava kasutada andmetüüpi "tekst".