PostgreSQL Datatyper: Byte, Numerisk, Tecken, Binär

PostgreSQL erbjuder en rik uppsättning inbyggda datatyper för användare. Användare kan lägga till nya typer med hjälp av CREATE TYPE-kommandot. Det gör också frågor enklare och mer läsbara.

Data skrivs in PostgreSQL

PostgreSQL stöder följande datatyper:

  • Texttyper
  • Numeriska typer
  • Datum och tider
  • XML
  • JSON
  • Boolean
  • Bits
  • Binär data
  • nätverks
  • arrayer
  • Skapa din datatyp
  • Boolean
  • Tillfällig
  • UUID
  • array
  • JSON
  • Speciella datatyper för att lagra en nätverksadress och geometriska data.

Låt oss studera PostgreSQL datatyper i detalj

Teckendatatyper

PostgreSQL stöder teckendatatyper för lagring av textvärden. PostgreSQL bygger teckendatatyper av samma interna strukturer. PostgreSQL erbjuder tre teckendatatyper: CHAR(n), VARCHAR(n) och TEXT.

Namn Description
varchar(n) Låter dig deklarera variabel längd med en gräns
Röd(n) Fast längd, blank vadderad
text Använd kan använda denna datatyp för att deklarera en variabel med obegränsad längd

Numeriska datatyper

PostgreSQL stöder två olika typer av nummer:

  • heltal
  • Flyttal
Namn Butiksstorlek Mätområde
smallint 2 bitgrupper -32768 till + 32767
heltal 4 bitgrupper -2147483648 till + 2147483647
bigint 8 bitgrupper -9223372036854775808 till 9223372036854775807
decimal- variabel Om du deklarerade den som decimal varierar datatypen från 131072 siffror före decimalkomma till 16383 siffror efter decimalkomma
numerisk variabel Om du deklarerar det som nummer kan du inkludera nummer upp till 131072 siffror före decimalkomma till 16383 siffror efter decimalkomma
verklig 4 bitgrupper 6 decimalsiffror precision
dubbla 8 bitgrupper 15 decimalsiffror precision

Binära datatyper

En binär sträng är en sekvens av oktetter eller byte. Binära Postgres-datatyper är uppdelade på två sätt.

  • Binära strängar tillåter lagring av odds med värde noll
  • Ej utskrivbara oktetter

Teckensträngar tillåter inte noll oktetter och tillåter även andra oktettvärden och sekvenser som är ogiltiga enligt databasens teckenuppsättningsregler för kodning.

Namn Lagringsstorlek Description
Byte 1 till 4 byte plus storleken på den binära strängen Binär sträng med variabel längd

Nätverksadresstyp

Många applikationer lagrar nätverksinformation som IP-adresser till användare eller sensorer. PostgreSQL har tre inbyggda typer som hjälper dig att optimera nätverksdata.

Namn Storlek Description
cider 7 eller 19 byte IPV4 och IPv6 nätverk
inet 7 eller 19 byte IPV4 och IPV5 värd och nätverk
macaddr 6 bitgrupper MAC-adresser

Att använda nätverksadresstyper har följande fördelar

  1. Lagringsutrymmessparande
  2. Kontroll av inmatningsfel
  3. Funktioner som att söka data via subnät

Textsökningstyp

PostgreSQL tillhandahåller två datatyper som är utformade för att stödja fulltextsökning. Fulltextsökning är att söka igenom en samling dokument på naturliga språk för att söka i de som bäst matchar en fråga.

  • Tsvector textsökning PostgreSQL variabeltyper representerar ett dokument i en form optimerad för textsökning
  • Textsökningen av frågetyp lagrar de nyckelord som behöver sökas

Datum/Tid Datatyper

PostgreSQL tidsstämpel erbjuder mikrosekundsprecision istället för sekundprecision. Dessutom har du också möjlighet att lagra med eller utan tidszon. PostgreSQL kommer att konvertera tidsstämpel med tidszon till UTC på inmatning och lagra den.

Inmatning av datum och tid accepteras i olika format, inklusive traditionell Postgres, ISO 8601. SQL-kompatibel mm.

PostgreSQL stöder beställning av dag/månad/år. Format som stöds är DMY, MDY, YMD

Temporala datatyper

Namn Storlek Mätområde Upplösning
Tidsstämpel utan tidszon 8 bitgrupper 4713 f.Kr. till 294276 e.Kr 1 mikrosekund/14 siffror
Tidsstämpel med tidszon 8 bitgrupper 4713 f.Kr. till 294276 e.Kr 1 mikrosekund/14 siffror
datum 4 bitgrupper 4713 f.Kr. till 294276 e.Kr En dag
Tid utan tidszon 8 bitgrupper 00:00:00 to 24:00:00 1 mikrosekund/14 siffror
Tid med tidszon 12 bitgrupper 00:00:00 + 1459 till 24:00:00-1459 1 mikrosekund/14 siffror
Intervall 12 bitgrupper -178000000 till 178000000 år 1 mikrosekund/14 siffror

Exempel

Ingång Description
2025-09-07 ISO 8601, 7 september med valfri datumstil (rekommenderat format)
September 7, 2025 7 september med valfri dejtstil
9/7/2025 7 september med MDY, 9 juli med DMY
9/7/25 7 september 2025, med MDY
2025-september-7 7 september med valfri dejtstil
7 september 2018 7 september med valfri dejtstil
7-september-25 7 september 2025, med YMD
20250907 ISO 8601,7 sep 20225 i valfritt läge
2025.250 år och dag på året, i det här fallet den 7 september 2025
J25250 Julians datum

Tid/tid med tidszoningång

Ingång Description
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Samma som 11:19
11: 19 PM samma som 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, samma som 11:19 EST
23: 19 EST tidszon specificerad som EST, samma som 11:19 EST

boolesk typ

En boolesk datatyp kan hålla

  • Sant
  • Falsk
  • null

värden.

Du använder en bool or boolean nyckelord för att deklarera en kolumn med den booleska datatypen.

När du infogar värden i en boolesk kolumn konverterar Postgre värden som

  • Ja
  • y
  • 1
  • t
  • sann

1.

Medan värderingar som

  • Nej
  • N
  • 0
  • F
  • Falsk

omvandlas till 0

När du väljer data konverteras värdena igen till yes, true, y, etc.

Geometriska datatyper

Geometriska datatyper representerar tvådimensionella rumsliga objekt. De hjälper till att utföra operationer som rotationer, skalning, translation, etc.

Namn Förvaringsstorlek Representationen Description
Punkt 16 bitgrupper Peka på ett plan (X, y)
linje 32 bitgrupper Oändlig linje ((xl.yl).(x2.y2))
Lseg 32 bitgrupper Finita linjesegment ((xl.yl).(x2.y2))
Box 32 bitgrupper Rektangulär Box ((xl.yl).(x2.y2))
Bana 16n + 16n byte Stäng och öppna sökvägen ((xl.yl),...)
Polygon 40 + 16n byte Polygon [(xl.yl)....]
Circle 24 bitgrupper Circle <(xy).r> (mittpunkt och radie)

Uppräknade typer

Räknat PostgreSQL datatyp är användbar för att representera information som sällan ändras, såsom landskod eller filial-ID. Den uppräknade datatypen representeras i en tabell med främmande nycklar för att säkerställa dataintegritet.

Exempelvis

Hårfärg är ganska statisk i en demografisk databas

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

Uppräknade typer

Områdestyp

Många affärsapplikationer kräver data i intervall. Vanligtvis definieras två kolumner (exempel: startdatum, slutdatum) för att hantera intervall. Detta är både ineffektivt och svårt att underhålla.

Postgre har byggt sortimentstyper enligt följande

  • int4range — Visa intervall för heltal
  • int8range — Visa intervall för bigint
  • numrange — Visar det numeriska området
  • tstrange — Hjälper dig att visa tidsstämpel utan tidszon
  • konstigt — Låter dig visa tidsstämpel med tidszon
  • datumintervall — Datumintervall

UUID-typ

Universally Unique Identifies (UUID) är en 128-bitars kvantitet som genereras av en algoritm. Det är mycket osannolikt att samma identifierare kommer att genereras av en annan person i världen som använder samma algoritm. Det är därför för de distribuerade systemen, dessa identifierare är ett idealiskt val eftersom det erbjuder unikhet inom en enda databas. Ett UUID skrivs som en grupp av små hexadecimala siffror, med olika grupper separerade med bindestreck.

PostgreSQL har en inbyggd UUID-datatyp som förbrukar 16 byte lagringsutrymme. UUID är en idealisk datatyp för primärnycklar.

Exempelvis

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre accepterar också alternativa former av UUID-inmatningar som alla versaler, inga bindestreck, hängslen, etc.

XML-typ

PostgreSQL låter dig lagra XML-data i en datatyp, men det är inget annat än ett tillägg till en textdatatyp. Men fördelen är att den kontrollerar att XML-inmatningen är välformaterad.

Exempelvis

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

JSON-typ

För att lagra JSON-data PostgreSQL erbjuder 2 datatyper

  1. JSON
  2. JSONB
json Jsonb
En enkel förlängning av en textdatatyp med JSON-validering En binär representation av JSON-data
Infogning går snabbt men datahämtning är relativt långsam. Infogning går långsamt men välj (datahämtning går snabbt)
Sparar inmatad data precis som den är inklusive blanksteg. Stöder indexering. Kan optimera blanksteg för att göra hämtning snabbare.
Ombearbetning vid datahämtning Ingen ombearbetning krävs vid datahämtning

Den mest använda JSON-datatypen använde oss av jsonb om det inte finns något speciellt behov av att använda JSON-datatypen.

Exempelvis

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 många specialanpassade poster som kallas pseudotyper. Du kan inte använda pseudotyper som PostgreSQL kolumntyper. Det används för att deklarera eller funktions argument eller returtyp.

Var och en av de tillgängliga pseudotyperna är till hjälp i situationer där en funktions beteendedokument inte motsvarar att bara ta eller returnera ett värde för en specifik SQL-datatyp.

Namn Description
Vilken som helst Funktionen accepterar alla indatatyper.
En matris Funktionen accepterar alla typer av arraydata.
Vilket element som helst Funktionen accepterar alla datatyper.
Vilken uppräkning som helst Funktionen accepterar alla enumdatatyper.
Icke-array Funktionen accepterar alla icke-arraydatatyper.
Cstring Funktionen accepterar eller returnerar nollterminerad C-sträng.
Inre Intern funktion accepterar eller returnerar serverintern datatyp.
Språkhanterare Det är deklarerat att returnera språkhanteraren.
Spela in Hitta en funktion som returnerar en ospecificerad radtyp.
Trigger En triggerfunktion används för att returnera trigger.

Det är viktigt att användaren som använder denna funktion måste se till att funktionen fungerar säkert när en pseudotyp används som argumenttyp.

Bästa metoder för att använda datatyper

  • Använd "text" datatyp om du inte vill begränsa inmatningen
  • Använd aldrig "kol".
  • Heltal använder "int." Använd bara bigint när du har riktigt stora siffror
  • Använd "numerisk" nästan alltid
  • Använd flyta in PostgreSQL om du har IEEE 754-datakälla

Sammanfattning

  • PostgreSQL erbjuder en rik uppsättning inbyggda datatyper för användare
  • PostgreSQL stöder teckendatatyper för lagring av textvärden
  • PostgreSQL stöder två distinkta typer av tal: 1. Heltal, 2. Flyttal
  • En binär sträng är en sekvens av byte eller oktetter
  • PostgreSQL har nätverksadresstyp för att hjälpa dig att optimera lagringen av nätverksdata
  • Textsökning PostgreSQL datastrukturer är utformade för att stödja fulltextsökning
  • Datum/tid PSQL-datatyper tillåter datum- och tidsinformation i olika format
  • Boolean Postgres-fälttyper kan innehålla tre värden 1. Sant 2. Falskt 3. Null
  • Geometrisk PostgreSQL datatyper representerar tvådimensionella rumsliga objekt
  • Uppräknade datatyper in PostgreSQL är användbar för att representera information som sällan ändras, såsom landskod eller filial-ID
  • Universally Unique Identifies (UUID) är en 128-bitars kvantitet som genereras av en algoritm
  • PostgreSQL har många specialanpassade poster som kallas pseudotyper
  • Det är bästa praxis att använda "text" datatyp om du inte vill begränsa inmatningen