PostgreSQL-datatyper: Tecken - Numerisk - Binär - Boolean

Innehållsförteckning:

Anonim

PostgreSQL erbjuder en rik uppsättning infödda 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.

Datatyper i PostgreSQL

PostgreSQL stöder följande datatyper:

  • Texttyper
  • Numeriska typer
  • Datum och tider
  • XML
  • JSON
  • Boolean
  • Bits
  • Binära data
  • Nätverk
  • Arrayer
  • Skapa din datatyp
  • Boolean
  • Timlig
  • UUID
  • Array
  • JSON
  • Särskilda datatyper för lagring av nätverksadress och geometriska data.

Låt oss studera PostgreSQL-datatyper i detalj

  • Teckendatatyper
  • Numeriska datatyper
  • Binära datatyper
  • Nätverksadresstyp
  • Text söktyp
  • Datum / tid Datatyper
  • Boolesk typ
  • Geometriska datatyper
  • Uppräknade typer
  • Områdestyp
  • UUID-typ
  • XML-typ
  • JSON-typ
  • Pseudo-typer

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 Beskrivning
varchar (n) Låter dig deklarera variabel längd med en gräns
Char (n) Blank vadderad i fast längd
Text Användning kan använda denna datatyp för att deklarera en variabel med obegränsad längd

Numeriska datatyper

PostgreSQL stöder två distinkta typer av nummer:

  • Heltal
  • Flytpunktsnummer
namn Butikens storlek Räckvidd
smallint 2 byte -32768 till +32767
heltal 4 bytes -2147483648 till +2147483647
bigint 8 byte -9223372036854775808 till 9223372036854775807
decimal- variabel Om du förklarade det som decimaltatatyp varierar från 131072 siffror före decimaltecken till 16383 siffror efter decimaltecken
numerisk variabel Om du förklarar det som siffran kan du inkludera nummer upp till 131072 siffror före decimaltecken till 16383 siffror efter decimaltecken
verklig 4 bytes 6 decimalers precision
dubbel 8 byte 15 decimalers precision

Binära datatyper

En binär sträng är en sekvens av oktetter eller byte. Binära postgresdatatyper är indelade på två sätt.

  • Binära strängar tillåter lagring av odds på värdet noll
  • Oktetter som inte kan skrivas ut

Teckensträngar tillåter inte noll oktetter och tillåter inte alla andra oktettvärden och sekvenser som är ogiltiga enligt databasens koduppsättningskodningsregler.

namn Förvaringsstorlek Beskrivning
Byte 1 till 4 byte plus storleken på den binära strängen Binärsträng med variabel längd

Nätverksadresstyp

Många applikationer lagrar nätverksinformation som IP-adress för användare eller

sensorer. PostgreSQL har tre inbyggda typer som hjälper dig att optimera nätverksdata.

namn Storlek Beskrivning
cider 7 eller 19 byes IPV4 och IPv6-nätverk
Inet 7 eller 19 byte IPV4 och IPV5-värd och nätverk
macaddr 6 byte MAC-adresser

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

  1. Sparar lagringsutrymme
  2. Kontroll av ingångsfel
  3. Funktioner som att söka i data via subnät

Text söktyp

PostgreSQL tillhandahåller två datatyper som är utformade för att stödja fulltextsökning. Fulltext-sökning söker igenom en samling naturliga språkdokument 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 som är optimerad för textsökning
  • Frågestypens textsökning lagrar de nyckelord som behöver sökas

Datum / tid Datatyper

PostgreSQL-tidsstämpel erbjuder mikrosekundprecision istället för andra precision. Dessutom har du också möjlighet att lagra med tidszon eller utan. PostgreSQL konverterar tidsstämpel med tidszon till UTC vid inmatning och lagrar den.

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

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

Temporal datatyper

namn Storlek Räckvidd Upplösning
Tidsstämpel utan tidszon 8 byte 4713 f.Kr. till 294276 e.Kr. 1 mikrosekund / 14 siffror
Tidsstämpel med tidszon 8 byte 4713 f.Kr. till 294276 e.Kr. 1 mikrosekund / 14 siffror
datum 4 bytes 4713 f.Kr. till 294276 e.Kr. En dag
Tid utan tidszon 8 byte 00:00:00 till 24:00:00 1 mikrosekund / 14 siffror
Tid med tidszon 12 byte 00:00:00 + 1459 till 24: 00: 00-1459 1 mikrosekund / 14 siffror
Intervall 12 byte -178000000 till 178000000 år 1 mikrosekund / 14 siffror

Exempel:

Inmatning Beskrivning
2025-09-07 ISO 8601, 7 september med valfritt datumformat (rekommenderat format)
7 september 2025 7 september med alla datumstilar
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 alla datumstilar
Sep-7-2018 7 september med alla datumstilar
7-september-25 7 september 2025 med YMD
20250907 ISO 8601,7 september 20225 i vilket läge som helst
2025.250 år och dag på året, i det här fallet den 7 september 2025
J25250 Julians datum

Tid / tid med tidszoninmatning

Inmatning Beskrivning
11: 19: 38.507 11:19:38 11:19 111938 ISO 8601
11:19 Samma som 11:19
23:19 samma som 23:19
23: 19-3 23: 19-03: 00 231900-03 ISO 8601, samma som 23:19 EST
23:19 EST tidszon specificerad som EST, samma som 23:19 EST

Boolesk typ

En boolesk datatyp kan innehålla

  • Sann
  • Falsk
  • null

värden.

Du använder ett bool- eller booleskt 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

till 1.

Medan värden som

  • Nej
  • N
  • 0
  • F
  • Falsk

omvandlas till 0

När du väljer data konverteras värdena igen till ja, sant, y, etc.

Geometriska datatyper

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

namn Förvaringsstorlek Representation Beskrivning
Punkt 16 byte Peka på ett plan (x, y)
Linje 32 byte Oändlig linje ((xl.yl). (x2.y2))
Lseg 32 byte Slutet linjesegment ((xl.yl). (x2.y2))
Låda 32 byte Rektangulär låda ((xl.yl). (x2.y2))
Väg 16n + 16n byte Stäng och öppna sökvägen ((xl.yl), ...)
Polygon 40 + 16n byte Polygon [(xl.yl)….]
Cirkel 24 byte Cirkel <(xy) .r> (mittpunkt och radie)

Uppräknade typer

Uppräknad datatyp PostgreSQL är användbar för att representera sällan förändrad information som landskod eller filial-id. Den uppräknade datatypen visas i en tabell med främmande nycklar för att säkerställa dataintegritet.

Exempel:

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. Normalt 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 intervallet
  • 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 med samma algoritm. Det är därför för de distribuerade systemen att dessa identifierare är ett perfekt val eftersom de erbjuder unikhet i en enda databas. En UUID skrivs som en grupp med små hexadecimala siffror, med olika grupper åtskilda av bindestreck.

PostgreSQL har en inbyggd UUID-datatyp som förbrukar 16 byte lagring ... UUID är en idealisk datatyp för primära nycklar.

Exempel:

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre accepterar också alternativa former av UUID-ingångar som alla stora bokstäver, 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-ingången är välformad.

Exempel:

XMLPARSE (DOCUMENT 'Data Type')

JSON-typ

För att lagra JSON-data erbjuder PostgreSQL två 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
Insättningen är snabb men datahämtningen är relativt långsam. Infoga är långsam men välj (datainhämtning är snabb)
Sparar inmatad data precis som det är inklusive blanksteg. Stöder indexering. Kan optimera det vita utrymmet för att göra det snabbare att hämta.
Ombearbetning vid datainhämtning Ingen upparbetning krävs vid datainhämtning

De mest använda JSON-datatyperna använde oss jsonb såvida det inte finns något speciellt behov av att använda JSON-datatypen.

Exempel:

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 specialposter som kallas pseudotyper. Du kan inte använda pseudotyper som PostgreSQL-kolumntyper. Det används för att deklarera eller funktionens argument eller returtyp.

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

namn Beskrivning
Några Funktionen accepterar alla inmatade datatyper.
En matris Funktionen accepterar vilken datatyp som helst.
Vilket element som helst Funktionen accepterar vilken datatyp som helst.
Varje enum Funktionen accepterar vilken datatyp som helst.
Nonarray Funktionen accepterar alla datatyper som inte är array.
Cstring Funktionen accepterar eller returnerar null-avslutad C-sträng.
Inre Intern funktion accepterar eller returnerar server-intern datatyp.
Språkhanterare Det förklaras returnera språkhanteraren.
Spela in Hitta en funktion som returnerar en ospecificerad radtyp.
Trigger En triggerfunktion används för att returnera triggern.

Det är viktigt att användaren som använder den här funktionen måste se till att funktionen fungerar säkert när en pseudo-typ används som argumenttyp.

Bästa metoder med datatyper

  • Använd datatyp "text" om du inte vill begränsa inmatningen
  • Använd aldrig "röding".
  • Heltals använder "int." Använd endast bigint när du har riktigt stora siffror
  • Använd "numeriskt" nästan alltid
  • Använd float i PostgreSQL om du har IEEE 754-datakälla

Sammanfattning

  • PostgreSQL erbjuder en rik uppsättning infödda datatyper för användare
  • PostgreSQL stöder teckendatatyper för lagring av textvärden
  • PostgreSQL stöder två distinkta typer av siffror: 1. Heltals, 2. Flytpunktsnummer
  • En binär sträng är en sekvens av byte eller oktetter
  • PostgreSQL har nätverksadresstyp som hjälper dig att optimera lagring av nätverksdata
  • Textsökning PostgreSQL datastrukturer är utformade för att stödja fulltextsökning
  • Datum / tid PSQL-datatyper tillåter information om datum och tid i olika format
  • Fälttyper av booleska postgres kan innehålla tre värden 1. Sant 2. Falsk 3. Noll
  • Geometriska PostgreSQL-datatyper representerar tvådimensionella rumsliga objekt
  • Uppräknade datatyper i PostgreSQL är användbara för att representera sällan förändrad information som landskod eller filial-id
  • Universally Unique Identifies (UUID) är en 128-bitars kvantitet som genereras av en algoritm
  • PostgreSQL har många specialposter som kallas pseudotyper
  • Det är bästa praxis att använda datatypen "text" om du inte vill begränsa inmatningen