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
- Salvestusruumi kokkuhoid
- Sisendvigade kontrollimine
- 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')
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
- JSON
- 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".