PostgreSQL Datatyper: Numerisk, Tegn, Byte
⚡ Smart oppsummering
PostgreSQL Datatyper definerer hvilken type verdi hver kolonne kan lagre, og dekker tegn-, numeriske, binære, dato og klokkeslett-, boolske, geometriske, nettverks-, UUID-, XML- og JSON-kategorier. PostgreSQL lar også brukere opprette egendefinerte typer med CREATE TYPE-kommandoen.
PostgreSQL tilbyr et rikt sett med integrerte datatyper for brukere. Brukere kan legge til nye typer ved hjelp av CREATE TYPE-kommandoen. Det gjør også spørsmål enklere og mer lesbare.
Datatyper inn PostgreSQL
PostgreSQL støtter følgende datatyper:
- Teksttyper
- Numeriske typer
- Datoer og tider
- XML
- JSON
- boolean
- Bits
- Binære data
- Network
- arrays
- Lag din datatype
- Midlertidig
- UUID
- Spesielle datatyper for lagring av nettverksadresse og geometriske data.
La oss studere PostgreSQL datatyper i detalj
Karakterdatatyper
PostgreSQL støtter tegndatatyper for lagring av tekstverdier. PostgreSQL bygger karakterdatatyper av de samme interne strukturene. PostgreSQL tilbyr tre tegndatatyper: CHAR(n), VARCHAR(n) og TEXT.
| Navn | Tekniske beskrivelser |
|---|---|
| varchar(n) | Lar deg deklarere variabel lengde med en grense |
| Char(n) | Fast lengde, blank polstret |
| tekst | Bruk kan bruke denne datatypen til å deklarere en variabel med ubegrenset lengde |
Numeriske datatyper
PostgreSQL støtter to forskjellige typer tall:
- heltall
- Flytende tall
| Navn | Butikkstørrelse | Område |
|---|---|---|
| smallint | 2 bytes | -32768 til + 32767 |
| heltall | 4 bytes | -2147483648 til + 2147483647 |
| bigint | 8 bytes | -9223372036854775808 til 9223372036854775807 |
| desimal | variabel | Hvis du erklærte det som desimal, varierer datatypen fra 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet |
| numerisk | variabel | Hvis du oppgir det som nummeret, kan du inkludere nummer opptil 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet |
| ekte | 4 bytes | 6 desimalsiffer presisjon |
| dobbelt | 8 bytes | 15 desimalsiffer presisjon |
Binære datatyper
En binær streng er en sekvens av oktetter eller byte. Binære Postgres-datatyper er delt inn på to måter.
- Binære strenger tillater lagring av odds med verdi null
- Ikke-utskrivbare oktetter
Tegnstrenger tillater ikke null oktetter og tillater også andre oktettverdier og sekvenser som er ugyldige i henhold til databasens tegnsettkodingsregler.
| Navn | Lagringsstørrelse | Tekniske beskrivelser |
|---|---|---|
| Byte | 1 til 4 byte pluss størrelsen på den binære strengen | Binær streng med variabel lengde |
Nettverksadressetype
Mange applikasjoner lagrer nettverksinformasjon som IP-adresser til brukere eller sensorer. PostgreSQL har tre native typer som hjelper deg med å optimalisere nettverksdataene.
| Navn | Størrelse | Tekniske beskrivelser |
|---|---|---|
| cidr | 7 eller 19 byte | IPv4 og IPv6 nettverk |
| inet | 7 eller 19 byte | IPv4- og IPv6-verter og -nettverk |
| macaddr | 6 bytes | MAC-adresser |
Bruk av nettverksadressetyper har følgende fordeler
- Lagringsplassbesparende
- Inndatafeilkontroll
- Funksjoner som å søke data etter subnett
Tekstsøketype
PostgreSQL gir to datatyper som er designet for å støtte fulltekstsøk. Fulltekstsøk er å søke gjennom en samling dokumenter på naturlig språk for å søke i de som passer best med et søk.
- Tsvector tekstsøk PostgreSQL variabeltyper representerer et dokument i en form som er optimert for tekstsøk
- Søketypen tekstsøk lagrer søkeordene som må søkes
Dato/klokkeslett Datatyper
PostgreSQL tidsstempel tilbyr mikrosekundpresisjon i stedet for sekundpresisjon. Dessuten har du også muligheten til å lagre med eller uten tidssone. PostgreSQL vil konvertere tidsstempel med tidssone til UTC ved inngang og lagre det.
Dato og klokkeslett er akseptert i ulike formater, inkludert tradisjonell Postgres, ISO 8601. SQL-kompatibel etc.
PostgreSQL støtter Dag / Måned / År bestilling. Formater som støttes er DMY, MDY, YMD
Tidsmessige datatyper
| Navn | Størrelse | Område | oppløsning |
|---|---|---|---|
| Tidsstempel uten tidssone | 8 bytes | 4713 f.Kr. til 294276 e.Kr | 1 mikrosekund/14 sifre |
| Tidsstempel med tidssone | 8 bytes | 4713 f.Kr. til 294276 e.Kr | 1 mikrosekund/14 sifre |
| data | 4 bytes | 4713 f.Kr. til 294276 e.Kr | En dag |
| Tid uten tidssone | 8 bytes | 00:00:00 to 24:00:00 | 1 mikrosekund/14 sifre |
| Tid med tidssone | 12 bytes | 00:00:00 + 1459 til 24:00:00-1459 | 1 mikrosekund/14 sifre |
| Intervall | 12 bytes | -178000000 til 178000000 år | 1 mikrosekund/14 sifre |
Eksempler
| Input | Tekniske beskrivelser |
|---|---|
| 2025-09-07 | ISO 8601, 7. september med hvilken som helst datostil (anbefalt format) |
| September 7, 2025 | 7. september med hvilken som helst datostil |
| 9/7/2025 | 7. september med MDY, 9. juli med DMY |
| 9/7/25 | 7. september 2025, med MDY |
| 2025-Sep-7 | 7. september med hvilken som helst datostil |
| 7. sep.2018 | 7. september med hvilken som helst datostil |
| 7-Sep-25 | 7. september 2025, med YMD |
| 20250907 | ISO 8601, 7. september 2025 i alle moduser |
| 2025.250 | år og dag i året, i dette tilfellet 7. september 2025 |
| J25250 | Julian date |
Tid/tid med tidssoneinngang
| Input | Tekniske beskrivelser |
|---|---|
| 11:19:38.507 11:19:38 11:19 111938 |
ISO 8601 |
| 11: 19 AM | Samme som 11:19 |
| 11: 19 PM | samme som 23:19 |
| 23: 19-3 23: 19-03: 00 231900-03 |
ISO 8601, samme som 11:19 EST |
| 23: 19 EST | tidssone spesifisert som EST, samme som 11:19 EST |
Boolsk type
En boolsk datatype kan holde
- ekte
- Falsk
- null
verdier.
Du bruker en bool or boolean nøkkelord for å deklarere en kolonne med den boolske datatypen.
Når du setter inn verdier i en boolsk kolonne, konverterer Postgre verdier som
- Ja
- y
- 1
- t
- sant
inn i 1.
Mens verdier som
- Nei
- N
- 0
- F
- Falsk
konverteres til 0
Mens du velger data, blir verdiene igjen konvertert tilbake til yes, true, y, etc.
Geometriske datatyper
Geometriske datatyper representerer todimensjonale romlige objekter. De hjelper til med å utføre operasjoner som rotasjoner, skalering, translasjon, etc.
| Navn | Lagringsstørrelse | Representasjon | Tekniske beskrivelser |
|---|---|---|---|
| Point | 16 bytes | Pek på et fly | (x, y) |
| linje | 32 bytes | Uendelig linje | ((xl.yl).(x2.y2)) |
| Lseg | 32 bytes | Finitt linjesegment | ((xl.yl).(x2.y2)) |
| Box | 32 bytes | rektangulær Box | ((xl.yl).(x2.y2)) |
| Sti | 16n + 16n byte | Lukk og åpne bane | ((xl.yl),...) |
| Polygon | 40 + 16n byte | Polygon | [(xl.yl),….] |
| Circle | 24 bytes | Circle | <(xy).r> (senterpunkt og radius) |
Oppregnede typer
Oppregnet PostgreSQL datatypen er nyttig for å representere informasjon som sjelden endrer seg, for eksempel landskode eller filial-ID. Den oppregnede datatypen er representert i en tabell med fremmednøkler for å sikre dataintegritet.
Eksempel
Hårfarge er ganske statisk i en demografisk database
CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')
Rekkevidde Type
Mange forretningsapplikasjoner krever data i områder. Vanligvis er to kolonner (eksempel: startdato, sluttdato) definert for å håndtere områder. Dette er både lite effektivt og vanskelig å vedlikeholde.
Postgre har bygget utvalgstyper som følger
- int4range — Vis rekkevidde for heltall
- int8range — Vis rekkevidde for bigint
- numrange — Viser det numeriske området
- tstrange — Hjelper deg å vise tidsstempel uten tidssone
- merkelig — Lar deg vise tidsstempel med tidssone
- datoperiode — datoområde
UUID-type
En universell unik identifikator (UUID) er en 128-bits størrelse som genereres av en algoritme. Det er svært usannsynlig at den samme identifikatoren vil bli generert av en annen person i verden som bruker den samme algoritmen. Derfor er disse identifikatorene et ideelt valg for distribuerte systemer, ettersom de tilbyr unikhet innenfor en enkelt database. En UUID skrives som en gruppe små heksadesimale sifre, med forskjellige grupper atskilt med bindestreker.
PostgreSQL har en innebygd UUID-datatype som bruker 16 byte lagringsplass. UUID er en ideell datatype for primærnøkler.
Eksempel
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre godtar også alternative former for UUID-inndata som store bokstaver, ingen bindestreker, klammeparenteser osv.
XML-type
PostgreSQL lar deg lagre XML-data i en datatype, men det er ikke noe mer enn en utvidelse til en tekstdatatype. Men fordelen er at den sjekker at XML-inndata er godt utformet.
Eksempel
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
JSON-type
For å lagre JSON-data PostgreSQL tilbyr 2 datatyper
- JSON
- JSONB
| JSON | Jsonb |
|---|---|
| En enkel utvidelse av en tekstdatatype med JSON-validering | En binær representasjon av JSON-dataene |
| Innsetting er rask, men datainnhenting er relativt sakte. | Innsettingen går sakte, men velg (datahenting er rask) |
| Lagrer innlagte data nøyaktig slik de er inkludert mellomrom. | Støtter indeksering. Kan optimere mellomrommet for å gjøre henting raskere. |
| Reprosessering ved datainnhenting | Ingen reprosessering kreves ved datainnhenting |
Den mest brukte JSON-datatypen brukte oss jsonb med mindre det er noe spesialisert behov for å bruke JSON-datatypen.
Eksempel
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"], "onboarded": true}');
Pseudo-typer
PostgreSQL har mange spesialoppføringer som kalles pseudotyper. Du kan ikke bruke pseudo-typer som PostgreSQL kolonnetyper. Det brukes til å deklarere eller funksjonens argument eller returtype.
Hver av de tilgjengelige pseudotypene er nyttige i situasjoner der en funksjons atferdsdokumenter ikke samsvarer med å bare ta eller returnere en verdi av en spesifikk SQL-datatype.
| Navn | Tekniske beskrivelser |
|---|---|
| Noen | Funksjonen aksepterer alle inndatatyper. |
| En matrise | Funksjonen aksepterer alle typer matrisedata. |
| Hvilket som helst element | Funksjonen godtar alle datatyper. |
| Enhver oppregning | Funksjonen godtar alle enum-datatyper. |
| Ikke-array | Funksjonen aksepterer alle ikke-matrisedatatyper. |
| Cstring | Funksjonen aksepterer eller returnerer nullterminert C-streng. |
| Intern | Intern funksjon aksepterer eller returnerer serverintern datatype. |
| Language_handler | Det er erklært å returnere språkbehandler. |
| Record | Finn en funksjon som returnerer en uspesifisert radtype. |
| Avtrekker | En triggerfunksjon brukes for å returnere trigger. |
Det er viktig at brukeren som bruker denne funksjonen må sørge for at funksjonen vil oppføre seg sikkert når en pseudotype brukes som argumenttype.
Gode fremgangsmåter for bruk av datatyper
- Bruk "tekst" datatype med mindre du vil begrense inndata
- Bruk aldri "char".
- Heltall bruker "int." Bruk bigint bare når du har virkelig store tall
- Bruk "numerisk" nesten alltid
- Bruk flyte inn PostgreSQL hvis du har IEEE 754-datakilde

