PostgreSQL datatyper: tegn - Numerisk - Binær - Boolsk

Innholdsfortegnelse:

Anonim

PostgreSQL tilbyr et rikt sett med innfødte 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 i PostgreSQL

PostgreSQL støtter følgende datatyper:

  • Teksttyper
  • Numeriske typer
  • Datoer og tider
  • XML
  • JSON
  • Boolsk
  • Biter
  • Binære data
  • Nettverk
  • Arrays
  • Lag din datatype
  • Boolsk
  • Temporal
  • UUID
  • Array
  • JSON
  • Spesielle datatyper for lagring av nettverksadresse og geometriske data.

La oss studere PostgreSQL datatyper i detalj

  • Tegn Datatyper
  • Numeriske datatyper
  • Binære datatyper
  • Nettverksadressetype
  • Tekstsøketype
  • Dato / klokkeslett Datatyper
  • Boolsk type
  • Geometriske datatyper
  • Oppregnede typer
  • Rekkevidde Type
  • UUID-type
  • XML-type
  • JSON Type
  • Pseudo-typer

Tegn Datatyper

PostgreSQL støtter karakterdatatyper for lagring av tekstverdier. PostgreSQL bygger karakterdatatyper av de samme interne strukturene. PostgreSQL tilbyr tre karakterdatatyper: CHAR (n), VARCHAR (n) og TEXT.

Navn Beskrivelse
varchar (n) Lar deg erklære variabel lengde med en grense
Røye (n) Blank polstret i fast lengde
Tekst Bruk kan bruke denne datatypen til å erklære en variabel med ubegrenset lengde

Numeriske datatyper

PostgreSQL støtter to forskjellige typer tall:

  • Heltall
  • Flytende tall
Navn Store størrelse Område
smallint 2 byte -32768 til +32767
heltall 4 byte -2147483648 til +2147483647
bigint 8 byte -9223372036854775808 til 9223372036854775807
desimal variabel Hvis du erklærte det som desimal datatype varierer fra 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet
numerisk variabel Hvis du erklærer det som tallet, kan du inkludere tall opp til 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet
ekte 4 byte 6 desimal sifre presisjon
dobbelt 8 byte 15 desimal sifre presisjon

Binære datatyper

En binær streng er en sekvens av oktetter eller byte. Binære postgres datatyper er delt på to måter.

  • Binære strenger tillater lagring av odds på verdi null
  • Ikke-utskrivbare oktetter

Tegnstrenger tillater ikke null oktetter og tillater ikke andre oktettverdier og -sekvenser som er ugyldige i henhold til databasens kodesett for kodesett.

Navn Lagringsstørrelse Beskrivelse
Byte 1 til 4 byte pluss størrelsen på binærstrengen Variabel lengde binær streng

Nettverksadressetype

Mange applikasjoner lagrer nettverksinformasjon som IP-adresse til brukere eller

sensorer. PostgreSQL har tre innfødte typer som hjelper deg med å optimalisere nettverksdataene.

Navn Størrelse Beskrivelse
cider 7 eller 19 byes IPV4 og IPv6-nettverk
Inet 7 eller 19 byte IPV4 og IPV5 vert og nettverk
macaddr 6 byte MAC-adresser

Bruk av nettverksadressetyper har følgende fordeler

  1. Lagring av lagringsplass
  2. Inngangsfeilkontroll
  3. Fungerer som å søke data etter delnett

Tekstsøketype

PostgreSQL tilbyr to datatyper som er designet for å støtte fulltekstsøk. Fulltekstsøk søker 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 et skjema som er optimalisert for tekstsøk
  • Søketypen tekstsøk lagrer nøkkelordene som må søkes

Dato / klokkeslett Datatyper

PostgreSQL tidsstempel tilbyr mikrosekund presisjon i stedet for andre presisjon. Videre har du også muligheten til å lagre med tidssone eller uten. PostgreSQL konverterer tidsstempel med tidssone til UTC ved inngang og lagrer den.

Inngang av dato og klokkeslett aksepteres i forskjellige format, inkludert tradisjonelle Postgres, ISO 8601. SQL-kompatibel osv.

PostgreSQL støtter dag / måned / år bestilling. Formater som støttes er DMY, MDY, YMD

Temporal datatyper

Navn Størrelse Område Vedtak
Tidsstempel uten tidssone 8 byte 4713 f.Kr. til 294276 e.Kr. 1 mikrosekund / 14 sifre
Tidsstempel med tidssone 8 byte 4713 f.Kr. til 294276 e.Kr. 1 mikrosekund / 14 sifre
Dato 4 byte 4713 f.Kr. til 294276 e.Kr. En dag
Tid uten tidssone 8 byte 00:00:00 til 24:00:00 1 mikrosekund / 14 sifre
Tid med tidssone 12 byte 00:00:00 + 1459 til 24: 00: 00-1459 1 mikrosekund / 14 sifre
Intervall 12 byte -178000000 til 178000000 år 1 mikrosekund / 14 sifre

Eksempler:

Inngang Beskrivelse
2025-09-07 ISO 8601, 7. september med hvilken som helst datostil (anbefalt format)
7. september 2025 7. september med hvilken som helst datostil
9.9.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
Sep-7-2018 7. september med hvilken som helst datostil
7.-25. September 7. september 2025 med YMD
20250907 ISO 8601,7 Sep 20225 i hvilken som helst modus
2025.250 år og dag i året, i dette tilfellet 7. september 2025
J25250 Julian date

Tid / tid med tidssoneinngang

Inngang Beskrivelse
11: 19: 38.507 11:19:38 11:19 111938 ISO 8601
11:19 Samme som 11:19
23:19 samme som 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, samme som 23:19 EST
23:19 EST tidssone spesifisert som EST, samme som 23:19 EST

Boolsk type

En boolsk datatype kan holde

  • ekte
  • Falsk
  • null

verdier.

Du bruker en bool eller boolsk nøkkelord for å erklære en kolonne med boolsk variabel.

Når du setter inn verdier i en boolsk kolonne, konverterer Postgre verdier som

  • Ja
  • y
  • 1
  • t
  • ekte

inn i 1.

Mens verdier som

  • Nei
  • N
  • 0
  • F
  • Falsk

konverteres til 0

Mens du velger data, konverteres verdiene igjen til ja, sant, y, etc.

Geometriske datatyper

Geometriske datatyper representerer todimensjonale romlige objekter. De hjelper til med å utføre operasjoner som rotasjoner, skalering, oversettelse, etc.

Navn Lagringsstørrelse Representasjon Beskrivelse
Punkt 16 byte Pek på et fly (x, y)
Linje 32 byte Uendelig linje ((xl.yl). (x2.y2))
Lseg 32 byte Endelig linjesegment ((xl.yl). (x2.y2))
Eske 32 byte Rektangulær eske ((xl.yl). (x2.y2))
Sti 16n + 16n byte Lukk og åpne bane ((xl.yl), ...)
Polygon 40 + 16n byte Polygon [(xl.yl)….]
Sirkel 24 byte Sirkel <(xy) .r> (midtpunkt og radius)

Oppregnede typer

Oppregnet PostgreSQL-datatype er nyttig for å representere informasjon som sjelden endrer seg, for eksempel landskode eller filial-ID. Den oppregnede datatypen er representert i en tabell med utenlandske nøkler for å sikre dataintegriteten.

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 intervaller. Vanligvis er to kolonner (eksempel: startdato, sluttdato) definert for å håndtere områder. Dette er både ineffektivt 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
  • rart - Lar deg vise tidsstempel med tidssone
  • datointervall - Datoområde

UUID-type

Universally Unique Identifies (UUID) er en 128-bit mengde som genereres av en algoritme. Det er svært lite sannsynlig at den samme identifikatoren vil bli generert av en annen person i verden ved hjelp av samme algoritme. Derfor er disse identifikatorene et ideelt valg for de distribuerte systemene, da det gir unikhet i en enkelt database. En UUID er skrevet som en gruppe små og små heksadesimale sifre, med forskjellige grupper atskilt med bindestreker.

PostgreSQL har en innfødt UUID-datatype som bruker 16 byte lagring ... UUID er en ideell datatype for primærnøkler.

Eksempel:

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre godtar også alternative former for UUID-innganger som alle store bokstaver, ingen bindestreker, seler osv.

XML-type

PostgreSQL lar deg lagre XML-data i en datatype, men det er ikke noe annet enn en utvidelse til en tekstdatatype. Men fordelen er at den sjekker at inngangs-XML er velformet.

Eksempel:

XMLPARSE (DOCUMENT 'Data Type')

JSON Type

For å lagre JSON-data tilbyr PostgreSQL to datatyper

  1. JSON
  2. JSONB
json Jsonb
En enkel utvidelse av en tekstdatatype med JSON-validering En binær representasjon av JSON-dataene
Innsettingen går raskt, men datainnhentingen er relativt treg. Innsettingen er treg, men velg (datainnhenting er rask)
Lagrer inngående data nøyaktig slik det er inkludert mellomrom. Støtter indeksering. Kan optimalisere det hvite området for å gjøre gjenfinning raskere.
Ombehandling på datainhenting Ingen behandling påkrevd 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 spesielle oppføringer som kalles pseudo-typer. Du kan ikke bruke pseudo-typer som PostgreSQL-kolonnetyper. Det brukes til å erklære eller funksjonens argument eller returtype.

Hver av de tilgjengelige pseudo-typene er nyttige i situasjoner der en funksjons atferdsdokumenter ikke samsvarer med å bare ta eller returnere en verdi av en bestemt SQL-datatype.

Navn Beskrivelse
Noen Funksjonen godtar all inngangsdatatype.
En matrise Funksjonen godtar alle typer datatyper.
Ethvert element Funksjonen godtar enhver datatype.
Eventuelt enum Funksjonen godtar enum datatype.
Nonarray Funksjonen godtar alle datatyper som ikke er matriser.
Cstring Funksjon aksepterer eller returnerer null-avsluttet C-streng.
Innvendig Intern funksjon godtar eller returnerer server-intern datatype.
Språkhåndterer Det er erklært å returnere språkbehandler.
Ta opp Finn en funksjon som returnerer en uspesifisert radtype.
Avtrekker En triggerfunksjon brukes til å returnere triggeren.

Det er viktig at brukeren som bruker denne funksjonen må sørge for at funksjonen vil oppføre seg sikkert når en pseudo-type brukes som argumenttype.

Beste fremgangsmåter ved bruk av datatyper

  • Bruk datatypen "tekst" med mindre du vil begrense inngangen
  • Bruk aldri "røye".
  • Heltall bruker "int." Bruk bigint bare når du har veldig store tall
  • Bruk "numerisk" nesten alltid
  • Bruk float i PostgreSQL hvis du har IEEE 754 datakilde

Sammendrag

  • PostgreSQL tilbyr et rikt sett med innfødte datatyper for brukere
  • PostgreSQL støtter karakterdatatyper for lagring av tekstverdier
  • PostgreSQL støtter to forskjellige typer tall: 1. Heltall, 2. Flytpunktstall
  • En binær streng er en sekvens av byte eller oktetter
  • PostgreSQL har nettverksadressetype som hjelper deg med å optimalisere lagring av nettverksdata
  • Tekstsøk PostgreSQL datastrukturer er designet for å støtte fulltekstsøk
  • Dato / klokkeslett PSQL-datatyper tillater informasjon om dato og klokkeslett i forskjellige formater
  • Felttyper i Boolske postgres kan inneholde tre verdier 1. Sann 2. Usann 3. Null
  • Geometriske PostgreSQL-datatyper representerer todimensjonale romlige objekter
  • Oppregnede datatyper i PostgreSQL er nyttige for å representere informasjon som sjelden endrer seg, for eksempel landskode eller gren-ID
  • Universally Unique Identifies (UUID) er en 128-bit mengde som genereres av en algoritme
  • PostgreSQL har mange spesielle oppføringer som kalles pseudo-typer
  • Det er best å bruke "tekst" datatype med mindre du vil begrense inndataene