PostgreSQL Datatyper: Byte, Numerisk, Tegn, Binær
PostgreSQL tilbyr et rikt sett med integrerte 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 inn PostgreSQL
PostgreSQL støtter følgende datatyper:
- Teksttyper
- Numeriske typer
- Datoer og tider
- XML
- JSON
- boolean
- Bits
- Binære data
- Network
- arrays
- Lag din datatype
- boolean
- Midlertidig
- UUID
- Array
- JSON
- Spesielle datatyper for lagring av nettverksadresse og geometriske data.
La oss studere PostgreSQL datatyper i detalj
Karakterdatatyper
PostgreSQL støtter tegndatatyper for lagring av tekstverdier. PostgreSQL bygger karakterdatatyper av de samme interne strukturene. PostgreSQL tilbyr tre tegndatatyper: CHAR(n), VARCHAR(n) og TEXT.
Navn | Description |
---|---|
varchar(n) | Lar deg deklarere variabel lengde med en grense |
Char(n) | Fast lengde, blank polstret |
tekst | Bruk kan bruke denne datatypen til å deklarere en variabel med ubegrenset lengde |
Numeriske datatyper
PostgreSQL støtter to forskjellige typer tall:
- heltall
- Flytende tall
Navn | Butikkstørrelse | Område |
---|---|---|
smallint | 2 bytes | -32768 til + 32767 |
heltall | 4 bytes | -2147483648 til + 2147483647 |
bigint | 8 bytes | -9223372036854775808 til 9223372036854775807 |
desimal | variabel | Hvis du erklærte det som desimal, varierer datatypen fra 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet |
numerisk | variabel | Hvis du oppgir det som nummeret, kan du inkludere nummer opptil 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet |
ekte | 4 bytes | 6 desimalsiffer presisjon |
dobbelt | 8 bytes | 15 desimalsiffer presisjon |
Binære datatyper
En binær streng er en sekvens av oktetter eller byte. Binære Postgres-datatyper er delt inn på to måter.
- Binære strenger tillater lagring av odds med verdi null
- Ikke-utskrivbare oktetter
Tegnstrenger tillater ikke null oktetter og tillater også andre oktettverdier og sekvenser som er ugyldige i henhold til databasens tegnsettkodingsregler.
Navn | Lagringsstørrelse | Description |
---|---|---|
Byte | 1 til 4 byte pluss størrelsen på den binære strengen | Binær streng med variabel lengde |
Nettverksadressetype
Mange applikasjoner lagrer nettverksinformasjon som IP-adresser til brukere eller sensorer. PostgreSQL har tre native typer som hjelper deg med å optimalisere nettverksdataene.
Navn | Størrelse | Description |
---|---|---|
sider | 7 eller 19 byte | IPV4 og IPv6 nettverk |
inet | 7 eller 19 byte | IPV4 og IPV5 vert og nettverk |
macaddr | 6 bytes | MAC-adresser |
Bruk av nettverksadressetyper har følgende fordeler
- Lagringsplassbesparende
- Inndatafeilkontroll
- Funksjoner som å søke data etter subnett
Tekstsøketype
PostgreSQL gir to datatyper som er designet for å støtte fulltekstsøk. Fulltekstsøk er å søke 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 en form som er optimert for tekstsøk
- Søketypen tekstsøk lagrer søkeordene som må søkes
Dato/klokkeslett Datatyper
PostgreSQL tidsstempel tilbyr mikrosekundpresisjon i stedet for sekundpresisjon. Dessuten har du også muligheten til å lagre med eller uten tidssone. PostgreSQL vil konvertere tidsstempel med tidssone til UTC ved inngang og lagre det.
Dato og klokkeslett er akseptert i ulike formater, inkludert tradisjonell Postgres, ISO 8601. SQL-kompatibel etc.
PostgreSQL støtter Dag / Måned / År bestilling. Formater som støttes er DMY, MDY, YMD
Tidsmessige datatyper
Navn | Størrelse | Område | oppløsning |
---|---|---|---|
Tidsstempel uten tidssone | 8 bytes | 4713 f.Kr. til 294276 e.Kr | 1 mikrosekund/14 sifre |
Tidsstempel med tidssone | 8 bytes | 4713 f.Kr. til 294276 e.Kr | 1 mikrosekund/14 sifre |
data | 4 bytes | 4713 f.Kr. til 294276 e.Kr | En dag |
Tid uten tidssone | 8 bytes | 00:00:00 to 24:00:00 | 1 mikrosekund/14 sifre |
Tid med tidssone | 12 bytes | 00:00:00 + 1459 til 24:00:00-1459 | 1 mikrosekund/14 sifre |
Intervall | 12 bytes | -178000000 til 178000000 år | 1 mikrosekund/14 sifre |
Eksempler
Input | Description |
---|---|
2025-09-07 | ISO 8601, 7. september med hvilken som helst datostil (anbefalt format) |
September 7, 2025 | 7. september med hvilken som helst 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 hvilken som helst datostil |
7. sep.2018 | 7. september med hvilken som helst datostil |
7-Sep-25 | 7. september 2025, med YMD |
20250907 | ISO 8601,7 sep 20225 i alle moduser |
2025.250 | år og dag i året, i dette tilfellet 7. september 2025 |
J25250 | Julian date |
Tid/tid med tidssoneinngang
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 | tidssone spesifisert som EST, samme som 11:19 EST |
Boolsk type
En boolsk datatype kan holde
- ekte
- Falsk
- null
verdier.
Du bruker en bool or boolean nøkkelord for å deklarere en kolonne med den boolske datatypen.
Når du setter inn verdier i en boolsk kolonne, konverterer Postgre verdier som
- Ja
- y
- 1
- t
- sant
inn i 1.
Mens verdier som
- Nei
- N
- 0
- F
- Falsk
konverteres til 0
Mens du velger data, blir verdiene igjen konvertert tilbake til yes, true, y, etc.
Geometriske datatyper
Geometriske datatyper representerer todimensjonale romlige objekter. De hjelper til med å utføre operasjoner som rotasjoner, skalering, translasjon, etc.
Navn | Lagringsstørrelse | Representasjon | Description |
---|---|---|---|
Point | 16 bytes | Pek på et fly | (x, y) |
linje | 32 bytes | Uendelig linje | ((xl.yl).(x2.y2)) |
Lseg | 32 bytes | Finitt linjesegment | ((xl.yl).(x2.y2)) |
Box | 32 bytes | rektangulær Box | ((xl.yl).(x2.y2)) |
Sti | 16n + 16n byte | Lukk og åpne bane | ((xl.yl),...) |
polygon | 40 + 16n byte | polygon | [(xl.yl)....] |
Circle | 24 bytes | Circle | <(xy).r> (senterpunkt og radius) |
Oppregnede typer
Oppregnet PostgreSQL datatypen er nyttig for å representere informasjon som sjelden endrer seg, for eksempel landskode eller filial-ID. Den oppregnede datatypen er representert i en tabell med fremmednøkler for å sikre dataintegritet.
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 områder. Vanligvis er to kolonner (eksempel: startdato, sluttdato) definert for å håndtere områder. Dette er både lite effektivt 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
- merkelig — Lar deg vise tidsstempel med tidssone
- datoperiode — datoområde
UUID-type
Universally Unique Identifies (UUID) er en 128-bits mengde som genereres av en algoritme. Det er svært usannsynlig at den samme identifikatoren vil bli generert av en annen person i verden som bruker den samme algoritmen. Derfor er disse identifikatorene et ideelt valg for de distribuerte systemene, siden de tilbyr unikhet i en enkelt database. En UUID skrives som en gruppe med små heksadesimale sifre, med ulike grupper atskilt med bindestreker.
PostgreSQL har en innebygd UUID-datatype som bruker 16 byte lagringsplass. UUID er en ideell datatype for primærnøkler.
Eksempel
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre godtar også alternative former for UUID-inndata som store bokstaver, ingen bindestreker, klammeparenteser osv.
XML-type
PostgreSQL lar deg lagre XML-data i en datatype, men det er ikke noe mer enn en utvidelse til en tekstdatatype. Men fordelen er at den sjekker at XML-inndata er godt utformet.
Eksempel
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
JSON-type
For å lagre JSON-data PostgreSQL tilbyr 2 datatyper
- JSON
- JSONB
JSON | Jsonb |
---|---|
En enkel utvidelse av en tekstdatatype med JSON-validering | En binær representasjon av JSON-dataene |
Innsetting er rask, men datainnhenting er relativt sakte. | Innsettingen går sakte, men velg (datahenting er rask) |
Lagrer innlagte data nøyaktig slik de er inkludert mellomrom. | Støtter indeksering. Kan optimere mellomrommet for å gjøre henting raskere. |
Reprosessering ved datainnhenting | Ingen reprosessering kreves 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 spesialoppføringer som kalles pseudotyper. Du kan ikke bruke pseudo-typer som PostgreSQL kolonnetyper. Det brukes til å deklarere eller funksjonens argument eller returtype.
Hver av de tilgjengelige pseudotypene er nyttige i situasjoner der en funksjons atferdsdokumenter ikke samsvarer med å bare ta eller returnere en verdi av en spesifikk SQL-datatype.
Navn | Description |
---|---|
Noen | Funksjonen aksepterer alle inndatatyper. |
En matrise | Funksjonen aksepterer alle typer matrisedata. |
Hvilket som helst element | Funksjonen godtar alle datatyper. |
Enhver oppregning | Funksjonen godtar alle enum-datatyper. |
Ikke-array | Funksjonen aksepterer alle ikke-matrisedatatyper. |
Cstring | Funksjonen aksepterer eller returnerer nullterminert C-streng. |
Intern | Intern funksjon aksepterer eller returnerer serverintern datatype. |
Language_handler | Det er erklært å returnere språkbehandler. |
Record | Finn en funksjon som returnerer en uspesifisert radtype. |
Avtrekker | En triggerfunksjon brukes for å returnere trigger. |
Det er viktig at brukeren som bruker denne funksjonen må sørge for at funksjonen vil oppføre seg sikkert når en pseudotype brukes som argumenttype.
Gode fremgangsmåter for bruk av datatyper
- Bruk "tekst" datatype med mindre du vil begrense inndata
- Bruk aldri "char".
- Heltall bruker "int." Bruk bigint bare når du har virkelig store tall
- Bruk "numerisk" nesten alltid
- Bruk flyte inn PostgreSQL hvis du har IEEE 754-datakilde
Oppsummering
- PostgreSQL tilbyr et rikt sett med integrerte datatyper for brukere
- PostgreSQL støtter tegndatatyper for lagring av tekstverdier
- PostgreSQL støtter to forskjellige typer tall: 1. Heltall, 2. Flytende tall
- En binær streng er en sekvens av byte eller oktetter
- PostgreSQL har nettverksadressetype for å hjelpe deg med å optimalisere lagring av nettverksdata
- Tekstsøk PostgreSQL datastrukturer er designet for å støtte fulltekstsøk
- Dato/klokkeslett PSQL-datatyper tillater dato- og klokkeslettinformasjon i ulike formater
- Boolske Postgres-felttyper kan inneholde tre verdier 1. Sant 2. Usant 3. Null
- Geometrisk PostgreSQL datatyper representerer todimensjonale romlige objekter
- Oppregnede datatyper inn PostgreSQL er nyttig for å representere informasjon som sjelden endrer seg, for eksempel landskode eller filial-ID
- Universally Unique Identifies (UUID) er en 128-bits mengde som genereres av en algoritme
- PostgreSQL har mange spesialoppføringer som kalles pseudotyper
- Det er best praksis å bruke "tekst" datatype med mindre du vil begrense inndata