PostgreSQL tilbyr et rikt sett med innfødte 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 i PostgreSQL
PostgreSQL støtter følgende datatyper:
- Teksttyper
- Numeriske typer
- Datoer og tider
- XML
- JSON
- Boolsk
- Biter
- Binære data
- Nettverk
- Arrays
- Lag din datatype
- Boolsk
- Temporal
- UUID
- Array
- JSON
- Spesielle datatyper for lagring av nettverksadresse og geometriske data.
La oss studere PostgreSQL datatyper i detalj
- Tegn Datatyper
- Numeriske datatyper
- Binære datatyper
- Nettverksadressetype
- Tekstsøketype
- Dato / klokkeslett Datatyper
- Boolsk type
- Geometriske datatyper
- Oppregnede typer
- Rekkevidde Type
- UUID-type
- XML-type
- JSON Type
- Pseudo-typer
Tegn Datatyper
PostgreSQL støtter karakterdatatyper for lagring av tekstverdier. PostgreSQL bygger karakterdatatyper av de samme interne strukturene. PostgreSQL tilbyr tre karakterdatatyper: CHAR (n), VARCHAR (n) og TEXT.
Navn | Beskrivelse |
---|---|
varchar (n) | Lar deg erklære variabel lengde med en grense |
Røye (n) | Blank polstret i fast lengde |
Tekst | Bruk kan bruke denne datatypen til å erklære en variabel med ubegrenset lengde |
Numeriske datatyper
PostgreSQL støtter to forskjellige typer tall:
- Heltall
- Flytende tall
Navn | Store størrelse | Område |
---|---|---|
smallint | 2 byte | -32768 til +32767 |
heltall | 4 byte | -2147483648 til +2147483647 |
bigint | 8 byte | -9223372036854775808 til 9223372036854775807 |
desimal | variabel | Hvis du erklærte det som desimal datatype varierer fra 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet |
numerisk | variabel | Hvis du erklærer det som tallet, kan du inkludere tall opp til 131072 sifre før desimaltegnet til 16383 sifre etter desimaltegnet |
ekte | 4 byte | 6 desimal sifre presisjon |
dobbelt | 8 byte | 15 desimal sifre presisjon |
Binære datatyper
En binær streng er en sekvens av oktetter eller byte. Binære postgres datatyper er delt på to måter.
- Binære strenger tillater lagring av odds på verdi null
- Ikke-utskrivbare oktetter
Tegnstrenger tillater ikke null oktetter og tillater ikke andre oktettverdier og -sekvenser som er ugyldige i henhold til databasens kodesett for kodesett.
Navn | Lagringsstørrelse | Beskrivelse |
---|---|---|
Byte | 1 til 4 byte pluss størrelsen på binærstrengen | Variabel lengde binær streng |
Nettverksadressetype
Mange applikasjoner lagrer nettverksinformasjon som IP-adresse til brukere eller
sensorer. PostgreSQL har tre innfødte typer som hjelper deg med å optimalisere nettverksdataene.
Navn | Størrelse | Beskrivelse |
---|---|---|
cider | 7 eller 19 byes | IPV4 og IPv6-nettverk |
Inet | 7 eller 19 byte | IPV4 og IPV5 vert og nettverk |
macaddr | 6 byte | MAC-adresser |
Bruk av nettverksadressetyper har følgende fordeler
- Lagring av lagringsplass
- Inngangsfeilkontroll
- Fungerer som å søke data etter delnett
Tekstsøketype
PostgreSQL tilbyr to datatyper som er designet for å støtte fulltekstsøk. Fulltekstsøk søker 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 et skjema som er optimalisert for tekstsøk
- Søketypen tekstsøk lagrer nøkkelordene som må søkes
Dato / klokkeslett Datatyper
PostgreSQL tidsstempel tilbyr mikrosekund presisjon i stedet for andre presisjon. Videre har du også muligheten til å lagre med tidssone eller uten. PostgreSQL konverterer tidsstempel med tidssone til UTC ved inngang og lagrer den.
Inngang av dato og klokkeslett aksepteres i forskjellige format, inkludert tradisjonelle Postgres, ISO 8601. SQL-kompatibel osv.
PostgreSQL støtter dag / måned / år bestilling. Formater som støttes er DMY, MDY, YMD
Temporal datatyper
Navn | Størrelse | Område | Vedtak |
---|---|---|---|
Tidsstempel uten tidssone | 8 byte | 4713 f.Kr. til 294276 e.Kr. | 1 mikrosekund / 14 sifre |
Tidsstempel med tidssone | 8 byte | 4713 f.Kr. til 294276 e.Kr. | 1 mikrosekund / 14 sifre |
Dato | 4 byte | 4713 f.Kr. til 294276 e.Kr. | En dag |
Tid uten tidssone | 8 byte | 00:00:00 til 24:00:00 | 1 mikrosekund / 14 sifre |
Tid med tidssone | 12 byte | 00:00:00 + 1459 til 24: 00: 00-1459 | 1 mikrosekund / 14 sifre |
Intervall | 12 byte | -178000000 til 178000000 år | 1 mikrosekund / 14 sifre |
Eksempler:
Inngang | Beskrivelse |
---|---|
2025-09-07 | ISO 8601, 7. september med hvilken som helst datostil (anbefalt format) |
7. september 2025 | 7. september med hvilken som helst datostil |
9.9.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 |
Sep-7-2018 | 7. september med hvilken som helst datostil |
7.-25. September | 7. september 2025 med YMD |
20250907 | ISO 8601,7 Sep 20225 i hvilken som helst modus |
2025.250 | år og dag i året, i dette tilfellet 7. september 2025 |
J25250 | Julian date |
Tid / tid med tidssoneinngang
Inngang | Beskrivelse |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 | Samme som 11:19 |
23:19 | samme som 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, samme som 23:19 EST |
23:19 EST | tidssone spesifisert som EST, samme som 23:19 EST |
Boolsk type
En boolsk datatype kan holde
- ekte
- Falsk
- null
verdier.
Du bruker en bool eller boolsk nøkkelord for å erklære en kolonne med boolsk variabel.
Når du setter inn verdier i en boolsk kolonne, konverterer Postgre verdier som
- Ja
- y
- 1
- t
- ekte
inn i 1.
Mens verdier som
- Nei
- N
- 0
- F
- Falsk
konverteres til 0
Mens du velger data, konverteres verdiene igjen til ja, sant, y, etc.
Geometriske datatyper
Geometriske datatyper representerer todimensjonale romlige objekter. De hjelper til med å utføre operasjoner som rotasjoner, skalering, oversettelse, etc.
Navn | Lagringsstørrelse | Representasjon | Beskrivelse |
---|---|---|---|
Punkt | 16 byte | Pek på et fly | (x, y) |
Linje | 32 byte | Uendelig linje | ((xl.yl). (x2.y2)) |
Lseg | 32 byte | Endelig linjesegment | ((xl.yl). (x2.y2)) |
Eske | 32 byte | Rektangulær eske | ((xl.yl). (x2.y2)) |
Sti | 16n + 16n byte | Lukk og åpne bane | ((xl.yl), ...) |
Polygon | 40 + 16n byte | Polygon | [(xl.yl)….] |
Sirkel | 24 byte | Sirkel | <(xy) .r> (midtpunkt og radius) |
Oppregnede typer
Oppregnet PostgreSQL-datatype er nyttig for å representere informasjon som sjelden endrer seg, for eksempel landskode eller filial-ID. Den oppregnede datatypen er representert i en tabell med utenlandske nøkler for å sikre dataintegriteten.
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 intervaller. Vanligvis er to kolonner (eksempel: startdato, sluttdato) definert for å håndtere områder. Dette er både ineffektivt 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
- rart - Lar deg vise tidsstempel med tidssone
- datointervall - Datoområde
UUID-type
Universally Unique Identifies (UUID) er en 128-bit mengde som genereres av en algoritme. Det er svært lite sannsynlig at den samme identifikatoren vil bli generert av en annen person i verden ved hjelp av samme algoritme. Derfor er disse identifikatorene et ideelt valg for de distribuerte systemene, da det gir unikhet i en enkelt database. En UUID er skrevet som en gruppe små og små heksadesimale sifre, med forskjellige grupper atskilt med bindestreker.
PostgreSQL har en innfødt UUID-datatype som bruker 16 byte lagring ... UUID er en ideell datatype for primærnøkler.
Eksempel:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre godtar også alternative former for UUID-innganger som alle store bokstaver, ingen bindestreker, seler osv.
XML-type
PostgreSQL lar deg lagre XML-data i en datatype, men det er ikke noe annet enn en utvidelse til en tekstdatatype. Men fordelen er at den sjekker at inngangs-XML er velformet.
Eksempel:
XMLPARSE (DOCUMENT '') Data Type …
JSON Type
For å lagre JSON-data tilbyr PostgreSQL to datatyper
- JSON
- JSONB
json | Jsonb |
---|---|
En enkel utvidelse av en tekstdatatype med JSON-validering | En binær representasjon av JSON-dataene |
Innsettingen går raskt, men datainnhentingen er relativt treg. | Innsettingen er treg, men velg (datainnhenting er rask) |
Lagrer inngående data nøyaktig slik det er inkludert mellomrom. | Støtter indeksering. Kan optimalisere det hvite området for å gjøre gjenfinning raskere. |
Ombehandling på datainhenting | Ingen behandling påkrevd 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 spesielle oppføringer som kalles pseudo-typer. Du kan ikke bruke pseudo-typer som PostgreSQL-kolonnetyper. Det brukes til å erklære eller funksjonens argument eller returtype.
Hver av de tilgjengelige pseudo-typene er nyttige i situasjoner der en funksjons atferdsdokumenter ikke samsvarer med å bare ta eller returnere en verdi av en bestemt SQL-datatype.
Navn | Beskrivelse |
---|---|
Noen | Funksjonen godtar all inngangsdatatype. |
En matrise | Funksjonen godtar alle typer datatyper. |
Ethvert element | Funksjonen godtar enhver datatype. |
Eventuelt enum | Funksjonen godtar enum datatype. |
Nonarray | Funksjonen godtar alle datatyper som ikke er matriser. |
Cstring | Funksjon aksepterer eller returnerer null-avsluttet C-streng. |
Innvendig | Intern funksjon godtar eller returnerer server-intern datatype. |
Språkhåndterer | Det er erklært å returnere språkbehandler. |
Ta opp | Finn en funksjon som returnerer en uspesifisert radtype. |
Avtrekker | En triggerfunksjon brukes til å returnere triggeren. |
Det er viktig at brukeren som bruker denne funksjonen må sørge for at funksjonen vil oppføre seg sikkert når en pseudo-type brukes som argumenttype.
Beste fremgangsmåter ved bruk av datatyper
- Bruk datatypen "tekst" med mindre du vil begrense inngangen
- Bruk aldri "røye".
- Heltall bruker "int." Bruk bigint bare når du har veldig store tall
- Bruk "numerisk" nesten alltid
- Bruk float i PostgreSQL hvis du har IEEE 754 datakilde
Sammendrag
- PostgreSQL tilbyr et rikt sett med innfødte datatyper for brukere
- PostgreSQL støtter karakterdatatyper for lagring av tekstverdier
- PostgreSQL støtter to forskjellige typer tall: 1. Heltall, 2. Flytpunktstall
- En binær streng er en sekvens av byte eller oktetter
- PostgreSQL har nettverksadressetype som hjelper deg med å optimalisere lagring av nettverksdata
- Tekstsøk PostgreSQL datastrukturer er designet for å støtte fulltekstsøk
- Dato / klokkeslett PSQL-datatyper tillater informasjon om dato og klokkeslett i forskjellige formater
- Felttyper i Boolske postgres kan inneholde tre verdier 1. Sann 2. Usann 3. Null
- Geometriske PostgreSQL-datatyper representerer todimensjonale romlige objekter
- Oppregnede datatyper i PostgreSQL er nyttige for å representere informasjon som sjelden endrer seg, for eksempel landskode eller gren-ID
- Universally Unique Identifies (UUID) er en 128-bit mengde som genereres av en algoritme
- PostgreSQL har mange spesielle oppføringer som kalles pseudo-typer
- Det er best å bruke "tekst" datatype med mindre du vil begrense inndataene