PostgreSQL Datatyper: Byte, Numerisk, Tegn, Binær

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
  • boolean
  • Midlertidig
  • UUID
  • Array
  • JSON
  • 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 Description
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 Description
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 Description
sider 7 eller 19 byte IPV4 og IPv6 nettverk
inet 7 eller 19 byte IPV4 og IPV5 vert og nettverk
macaddr 6 bytes MAC-adresser

Bruk av nettverksadressetyper har følgende fordeler

  1. Lagringsplassbesparende
  2. Inndatafeilkontroll
  3. 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 Description
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 sep 20225 i alle moduser
2025.250 år og dag i året, i dette tilfellet 7. september 2025
J25250 Julian date

Tid/tid med tidssoneinngang

Input Description
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 Description
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')

Oppregnede typer

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

Universally Unique Identifies (UUID) er en 128-bits mengde 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 de distribuerte systemene, siden de tilbyr unikhet i en enkelt database. En UUID skrives som en gruppe med små heksadesimale sifre, med ulike 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

  1. JSON
  2. 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"], "onboareded": 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 Description
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

Oppsummering

  • PostgreSQL tilbyr et rikt sett med integrerte datatyper for brukere
  • PostgreSQL støtter tegndatatyper for lagring av tekstverdier
  • PostgreSQL støtter to forskjellige typer tall: 1. Heltall, 2. Flytende tall
  • En binær streng er en sekvens av byte eller oktetter
  • PostgreSQL har nettverksadressetype for å hjelpe deg med å optimalisere lagring av nettverksdata
  • Tekstsøk PostgreSQL datastrukturer er designet for å støtte fulltekstsøk
  • Dato/klokkeslett PSQL-datatyper tillater dato- og klokkeslettinformasjon i ulike formater
  • Boolske Postgres-felttyper kan inneholde tre verdier 1. Sant 2. Usant 3. Null
  • Geometrisk PostgreSQL datatyper representerer todimensjonale romlige objekter
  • Oppregnede datatyper inn PostgreSQL er nyttig for å representere informasjon som sjelden endrer seg, for eksempel landskode eller filial-ID
  • Universally Unique Identifies (UUID) er en 128-bits mengde som genereres av en algoritme
  • PostgreSQL har mange spesialoppføringer som kalles pseudotyper
  • Det er best praksis å bruke "tekst" datatype med mindre du vil begrense inndata