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

PostgreSQL tilbyder et rigt sæt af indbyggede datatyper til brugere. Brugere kan tilføje nye typer ved hjælp af CREATE TYPE-kommandoen. Det gør også forespørgsler enklere og mere læsbare.

Datatyper ind PostgreSQL

PostgreSQL understøtter følgende datatyper:

  • Teksttyper
  • Numeriske typer
  • Datoer og tider
  • XML
  • JSON
  • Boolesk
  • Bits
  • Binære data
  • Netværk
  • Arrays
  • Opret din datatype
  • Boolesk
  • Midlertidig
  • UUID
  • Array
  • JSON
  • Særlige datatyper til lagring af en netværksadresse og geometriske data.

Lad os studere PostgreSQL datatyper i detaljer

Tegn Datatyper

PostgreSQL understøtter tegndatatyper til lagring af tekstværdier. PostgreSQL bygger karakterdatatyper ud fra de samme interne strukturer. PostgreSQL tilbyder tre tegndatatyper: CHAR(n), VARCHAR(n) og TEXT.

Navn Description
varchar(n) Giver dig mulighed for at erklære variabel længde med en grænse
Char(n) Blank polstret med fast længde
tekst Brug kan bruge denne datatype til at erklære en variabel med ubegrænset længde

Numeriske datatyper

PostgreSQL understøtter to forskellige typer tal:

  • Heltal
  • Flydende kommatal
Navn Butiksstørrelse Rækkevidde
smallint 2 bytes -32768 til + 32767
heltal 4 bytes -2147483648 til + 2147483647
bigint 8 bytes -9223372036854775808 til 9223372036854775807
decimal variabel Hvis du erklærede det som decimal, varierer datatypen fra 131072 cifre før decimalkommaet til 16383 cifre efter decimalkommaet
numerisk variabel Hvis du erklærer det som nummeret, kan du inkludere nummer op til 131072 cifre før decimalkommaet til 16383 cifre efter decimaltegnet
ægte 4 bytes 6 decimalcifre præcision
fordoble 8 bytes 15 decimalcifre præcision

Binære datatyper

En binær streng er en sekvens af oktetter eller bytes. Binære Postgres-datatyper er opdelt på to måder.

  • Binære strenge tillader lagring af odds på værdi nul
  • Ikke-printbare oktetter

Tegnstrenge tillader ikke nul oktetter og tillader også andre oktetværdier og sekvenser, som er ugyldige i henhold til databasens tegnsætkodningsregler.

Navn Opbevaringsstørrelse Description
Byte 1 til 4 bytes plus størrelsen af ​​den binære streng Binær streng med variabel længde

Netværksadressetype

Mange applikationer gemmer netværksoplysninger som IP-adresser på brugere eller sensorer. PostgreSQL har tre indbyggede typer, som hjælper dig med at optimere netværksdataene.

Navn Størrelse Description
cider 7 eller 19 bytes IPV4 og IPv6 net
Inet 7 eller 19 bytes IPV4 og IPV5 vært og netværk
macaddr 6 bytes MAC-adresser

Brug af netværksadressetyper har følgende fordele

  1. Lagerpladsbesparelse
  2. Kontrol af inputfejl
  3. Funktioner som at søge data efter undernet

Tekstsøgningstype

PostgreSQL giver to datatyper, som er designet til at understøtte fuldtekstsøgning. Fuldtekstsøgning er at søge gennem en samling af dokumenter på naturligt sprog for at søge i dem, der bedst matcher en forespørgsel.

  • Tsvector tekstsøgning PostgreSQL variabeltyper repræsenterer et dokument i en form, der er optimeret til tekstsøgning
  • Forespørgselstypen tekstsøgning gemmer de søgeord, der skal søges efter

Dato/klokkeslæt Datatyper

PostgreSQL timestamp tilbyder mikrosekund præcision i stedet for anden præcision. Derudover har du også mulighed for at gemme med eller uden tidszone. PostgreSQL vil konvertere tidsstempel med tidszone til UTC på input og gemme det.

Indtastning af dato og klokkeslæt accepteres i forskellige formater, herunder traditionel Postgres, ISO 8601. SQL-kompatibel mm.

PostgreSQL understøtter dag / måned / år bestilling. Understøttede formater er DMY, MDY, YMD

Tidsmæssige datatyper

Navn Størrelse Rækkevidde Løsning
Tidsstempel uden tidszone 8 bytes 4713 f.Kr. til 294276 e.Kr 1 mikrosekund/14 cifre
Tidsstempel med tidszone 8 bytes 4713 f.Kr. til 294276 e.Kr 1 mikrosekund/14 cifre
dato 4 bytes 4713 f.Kr. til 294276 e.Kr En dag
Tid uden tidszone 8 bytes 00:00:00 to 24:00:00 1 mikrosekund/14 cifre
Tid med tidszone 12 bytes 00:00:00 + 1459 til 24:00:00-1459 1 mikrosekund/14 cifre
Interval 12 bytes -178000000 til 178000000 år 1 mikrosekund/14 cifre

Eksempler

Input Description
2025-09-07 ISO 8601, 7. september med enhver datostil (anbefalet format)
September 7, 2025 7. september med enhver 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 enhver datostil
7. september 2018 7. september med enhver datostil
7-Sep-25 7. september 2025 med YMD
20250907 ISO 8601,7 sep 20225 i enhver tilstand
2025.250 år og dag på året, i dette tilfælde 7. september 2025
J25250 Julian dato

Tid/tid med tidszoneindgang

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 tidszone angivet som EST, samme som 11:19 EST

boolesk type

En boolsk datatype kan holde

  • Sand
  • False
  • null

værdier.

Du bruger en bool or boolean nøgleord for at erklære en kolonne med den boolske datatype.

Når du indsætter værdier i en boolesk kolonne, konverterer Postgre værdier som f.eks

  • Ja
  • y
  • 1
  • t
  • sand

ind i 1.

Mens værdier som

  • Ingen
  • N
  • 0
  • F
  • False

konverteres til 0

Mens du vælger data, konverteres værdierne igen til yes, true, y osv.

Geometriske datatyper

Geometriske datatyper repræsenterer todimensionelle rumlige objekter. De hjælper med at udføre operationer som rotationer, skalering, translation osv.

Navn Opbevaringsstørrelse Repræsentation Description
Punkt 16 bytes Peg på et fly (x, y)
Line (linje) 32 bytes Uendelig linje ((xl.yl).(x2.y2))
Lseg 32 bytes Afgrænset linjesegment ((xl.yl).(x2.y2))
Box 32 bytes Rektangulær Box ((xl.yl).(x2.y2))
Sti 16n + 16n bytes Luk og åbn sti ((xl.yl),...)
Polygon 40 + 16n bytes Polygon [(xl.yl)….]
Circle 24 bytes Circle <(xy).r> (midtpunkt og radius)

Opregnede Typer

Opregnet PostgreSQL datatypen er nyttig til at repræsentere sjældent skiftende oplysninger såsom landekode eller filial-id. Den optalte datatype er repræsenteret i en tabel med fremmednøgler for at sikre dataintegritet.

Eksempel

Hårfarve er ret statisk i en demografisk database

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

Opregnede Typer

Område Type

Mange forretningsapplikationer kræver data i intervaller. Typisk er to kolonner (eksempel: startdato, slutdato) defineret til at håndtere intervaller. Dette er både ineffektivt og svært at vedligeholde.

Postgre har bygget sortimentstyper som følger

  • int4range — Vis rækkevidde af heltal
  • int8range — Vis rækkevidde af bigint
  • numrange — Viser det numeriske område
  • tstrange — Hjælper dig med at vise tidsstempel uden tidszone
  • mærkelig — Giver dig mulighed for at vise tidsstempel med tidszone
  • datointerval — datointerval

UUID type

Universally Unique Identifies (UUID) er en 128-bit mængde, som genereres af en algoritme. Det er meget usandsynligt, at den samme identifikator vil blive genereret af en anden person i verden, der bruger den samme algoritme. Det er derfor, for de distribuerede systemer, disse identifikatorer er et ideelt valg, da det tilbyder unikhed i en enkelt database. Et UUID er skrevet som en gruppe af små hexadecimale cifre med forskellige grupper adskilt af bindestreger.

PostgreSQL har en indbygget UUID-datatype, som bruger 16 bytes lagerplads. UUID er en ideel datatype til primærnøgler.

Eksempel

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre accepterer også alternative former for UUID-input som alle store bogstaver, ingen bindestreger, klammeparenteser osv.

XML-type

PostgreSQL giver dig mulighed for at gemme XML-data i en datatype, men det er ikke andet end en udvidelse til en tekstdatatype. Men fordelen er, at den kontrollerer, at input-XML'en er veludformet.

Eksempel

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

JSON type

For at gemme JSON-data PostgreSQL tilbyder 2 datatyper

  1. JSON
  2. JSONB
json Jsonb
En simpel udvidelse af en tekstdatatype med JSON-validering En binær repræsentation af JSON-dataene
Indsættelse er hurtig, men datahentning er relativt langsom. Indsæt er langsomt, men vælg (datahentning er hurtig)
Gemmer indtastede data præcis, som de er inklusive blanktegn. Understøtter indeksering. Kan optimere mellemrummet for at gøre hentning hurtigere.
Genbehandling ved datahentning Ingen genbehandling påkrævet ved datahentning

Den mest udbredte JSON-datatype brugte os jsonb, medmindre der er et eller andet specialiseret behov for at bruge 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 særlige formål, der kaldes pseudo-typer. Du kan ikke bruge pseudo-typer som PostgreSQL kolonnetyper. Der bruges til at erklære eller funktions argument eller returtype.

Hver af de tilgængelige pseudotyper er nyttige i situationer, hvor en funktions adfærdsdokumenter ikke svarer til blot at tage eller returnere en værdi af en bestemt SQL datatype.

Navn Description
Enhver Funktionen accepterer alle inputdatatyper.
Et array Funktionen accepterer enhver array-datatype.
Ethvert element Funktionen accepterer enhver datatype.
Enhver opregning Funktionen accepterer enhver enum datatype.
Ikke-array Funktionen accepterer enhver ikke-matrix datatype.
Cstring Funktionen accepterer eller returnerer nul-termineret C-streng.
Intern Intern funktion accepterer eller returnerer serverintern datatype.
Language_handler Det erklæres at returnere sproghandler.
Optage Find en funktion, som returnerer en uspecificeret rækketype.
Udløser En triggerfunktion bruges til at returnere trigger.

Det er vigtigt, at brugeren, der bruger denne funktion, skal sikre sig, at funktionen vil opføre sig sikkert, når en pseudo-type bruges som argumenttype.

Bedste øver sig i at bruge datatyper

  • Brug "tekst" datatype, medmindre du vil begrænse input
  • Brug aldrig "char".
  • Heltal bruger "int." Brug kun bigint, når du har rigtig store tal
  • Brug "numerisk" næsten altid
  • Brug float in PostgreSQL hvis du har IEEE 754 datakilde

Resumé

  • PostgreSQL tilbyder et rigt sæt af indbyggede datatyper til brugere
  • PostgreSQL understøtter tegndatatyper til lagring af tekstværdier
  • PostgreSQL understøtter to forskellige typer tal: 1. Heltal, 2. Flydende kommatal
  • En binær streng er en sekvens af bytes eller oktetter
  • PostgreSQL har netværksadressetype for at hjælpe dig med at optimere lagring af netværksdata
  • Tekstsøgning PostgreSQL datastrukturer er designet til at understøtte fuldtekstsøgning
  • Dato/klokkeslæt PSQL-datatyper tillader dato- og tidsinformation i forskellige formater
  • Boolean Postgres-felttyper kan indeholde tre værdier 1. Sand 2. Falsk 3. Null
  • Geometrisk PostgreSQL datatyper repræsenterer todimensionelle rumlige objekter
  • Opregnede datatyper ind PostgreSQL er nyttig til at repræsentere sjældent skiftende oplysninger såsom landekode eller filial-id
  • Universally Unique Identifies (UUID) er en 128-bit mængde, der genereres af en algoritme
  • PostgreSQL har mange særlige formål, der kaldes pseudo-typer
  • Det er bedste praksis at bruge "tekst" datatype, medmindre du ønsker at begrænse input