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
- Lagringsutrymmessparande
- Kontroll av inmatningsfel
- 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')
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
- JSON
- 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