PostgreSQL tilbyder et rigt sæt indfødte datatyper til brugere. Brugere kan tilføje nye typer ved hjælp af CREATE TYPE-kommandoen. Det gør forespørgsler også enklere og mere læsbare.
Datatyper i PostgreSQL
PostgreSQL understøtter følgende datatyper:
- Teksttyper
- Numeriske typer
- Datoer og tider
- XML
- JSON
- Boolsk
- Bits
- Binære data
- Netværk
- Arrays
- Opret din datatype
- Boolsk
- Temporal
- UUID
- Array
- JSON
- Specielle datatyper til lagring af en netværksadresse og geometriske data.
Lad os studere PostgreSQL-datatyper i detaljer
- Tegn Datatyper
- Numeriske datatyper
- Binære datatyper
- Netværksadressetype
- Tekstsøgningstype
- Dato / klokkeslæt Datatyper
- Boolsk type
- Geometriske datatyper
- Opregnede typer
- Område Type
- UUID-type
- XML-type
- JSON Type
- Pseudo-typer
Tegn Datatyper
PostgreSQL understøtter karakterdatatyper til lagring af tekstværdier. PostgreSQL bygger karakterdatatyper ud af de samme interne strukturer. PostgreSQL tilbyder tre karakterdatatyper: CHAR (n), VARCHAR (n) og TEXT.
Navn | Beskrivelse |
---|---|
varchar (n) | Giver dig mulighed for at erklære variabel længde med en grænse |
Char (n) | Blank polstret med fast længde |
Tekst | Brug kan bruge denne datatype til at erklære en variabel med ubegrænset længde |
Numeriske datatyper
PostgreSQL understøtter to forskellige typer numre:
- Heltal
- Flydende numre
Navn | Store størrelse | Rækkevidde |
---|---|---|
smallint | 2 byte | -32768 til +32767 |
heltal | 4 byte | -2147483648 til +2147483647 |
bigint | 8 byte | -9223372036854775808 til 9223372036854775807 |
decimal | variabel | Hvis du erklærede det som decimal datatype varierer fra 131072 cifre før decimaltegnet til 16383 cifre efter decimaltegnet |
numerisk | variabel | Hvis du erklærer det som tallet, kan du medtage et tal op til 131072 cifre før decimaltegnet til 16383 cifre efter decimaltegnet |
ægte | 4 byte | 6 decimal cifre præcision |
dobbelt | 8 byte | 15 decimal cifre præcision |
Binære datatyper
En binær streng er en sekvens af oktetter eller bytes. Binære postgres datatyper er opdelt på to måder.
- Binære strenge tillader lagring af odds på værdi nul
- Ikke-udskrivelige oktetter
Tegnstrenge tillader ikke nul oktetter og tillader heller ikke andre oktetværdier og -sekvenser, der er ugyldige i henhold til databasens kodningssæt for tegnsæt.
Navn | Opbevaringsstørrelse | Beskrivelse |
---|---|---|
Byte | 1 til 4 byte plus størrelsen på den binære streng | Binær streng med variabel længde |
Netværksadressetype
Mange applikationer gemmer netværksoplysninger som IP-adresse for brugere eller
sensorer. PostgreSQL har tre native typer, som hjælper dig med at optimere netværksdataene.
Navn | Størrelse | Beskrivelse |
---|---|---|
cider | 7 eller 19 byes | IPV4- og IPv6-netværk |
Inet | 7 eller 19 byte | IPV4 og IPV5 vært og netværk |
macaddr | 6 byte | MAC-adresser |
Brug af netværksadressetyper har følgende fordele
- Lagring af pladsbesparelse
- Inputfejlkontrol
- Fungerer som at søge data på subnet
Tekstsøgningstype
PostgreSQL leverer to datatyper, som er designet til at understøtte søgning i fuld tekst. Fuldtekstsøgning søger gennem en samling af naturlige sprogdokumenter for at søge i dem, der bedst matcher en forespørgsel.
- Tsvector-tekstsøgning PostgreSQL-variabeltyper repræsenterer et dokument i en form optimeret til tekstsøgning
- Forespørgselstypen tekstsøgning gemmer de søgeord, der skal søges
Dato / klokkeslæt Datatyper
PostgreSQL-tidsstempel tilbyder mikrosekundpræcision i stedet for andenpræcision. Desuden har du også mulighed for at gemme med tidszone eller uden. PostgreSQL konverterer tidsstempel med tidszone til UTC ved input og gemmer det.
Input af dato og klokkeslæt accepteres i forskellige format, inklusive traditionelle Postgres, ISO 8601. SQL-kompatibel osv.
PostgreSQL understøtter bestilling af dag / måned / år. Understøttede formater er DMY, MDY, YMD
Temporal datatyper
Navn | Størrelse | Rækkevidde | Løsning |
---|---|---|---|
Tidsstempel uden tidszone | 8 byte | 4713 f.Kr. til 294276 e.Kr. | 1 mikrosekund / 14 cifre |
Tidsstempel med tidszone | 8 byte | 4713 f.Kr. til 294276 e.Kr. | 1 mikrosekund / 14 cifre |
dato | 4 byte | 4713 f.Kr. til 294276 e.Kr. | En dag |
Tid uden tidszone | 8 byte | 00:00:00 til 24:00:00 | 1 mikrosekund / 14 cifre |
Tid med tidszone | 12 byte | 00:00:00 + 1459 til 24: 00: 00-1459 | 1 mikrosekund / 14 cifre |
Interval | 12 byte | -178000000 til 178000000 år | 1 mikrosekund / 14 cifre |
Eksempler:
Indgang | Beskrivelse |
---|---|
2025-09-07 | ISO 8601, 7. september med enhver datoformat (anbefalet format) |
7. september 2025 | 7. september med enhver 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 enhver datostil |
Sep-7-2018 | 7. september med enhver datostil |
7.-25. September | 7. september 2025 med YMD |
20250907 | ISO 8601,7 Sep 20225 i enhver tilstand |
2025.250 | år og dag i året, i dette tilfælde 7. september 2025 |
J25250 | Julian dato |
Tid / tid med tidszoneindgang
Indgang | 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 | tidszone specificeret som EST, samme som 23:19 EST |
Boolsk type
En boolsk datatype kan indeholde
- Sand
- Falsk
- nul
værdier.
Du bruger en bool eller boolsk søgeord for at erklære en kolonne med den booleske datatype.
Når du indsætter værdier i en boolesk kolonne, konverterer Postgre værdier som f.eks
- Ja
- y
- 1
- t
- sand
ind i 1.
Mens værdier som
- Ingen
- N
- 0
- F
- Falsk
konverteres til 0
Mens du vælger data, konverteres værdierne igen til ja, sandt, y osv.
Geometriske datatyper
Geometriske datatyper repræsenterer to-dimensionelle rumlige objekter. De hjælper med at udføre operationer som rotationer, skalering, oversættelse osv.
Navn | Opbevaringsstørrelse | Repræsentation | Beskrivelse |
---|---|---|---|
Punkt | 16 byte | Peg på et fly | (x, y) |
Linie | 32 byte | Uendelig linje | ((xl.yl). (x2.y2)) |
Lseg | 32 byte | Endeligt linjesegment | ((xl.yl). (x2.y2)) |
Boks | 32 byte | Rektangulær kasse | ((xl.yl). (x2.y2)) |
Sti | 16n + 16n bytes | Luk og åbn sti | ((xl.yl),…) |
Polygon | 40 + 16n bytes | Polygon | [(xl.yl)….] |
Cirkel | 24 byte | Cirkel | <(xy) .r> (centerpunkt og radius) |
Opregnede typer
Enumereret PostgreSQL-datatype er nyttig til at repræsentere sjældent skiftende oplysninger såsom landekode eller filial-id. Den opregnede datatype er repræsenteret i en tabel med udenlandske nøgler for at sikre dataintegriteten.
Eksempel:
Hårfarve er ret statisk i en demografisk database
CREATE TYPE hair_color AS ENUM('brown','black','red','grey','blond')
Område Type
Mange forretningsapplikationer kræver data i intervaller. Typisk er to kolonner (eksempel: startdato, slutdato) defineret til at håndtere intervaller. Dette er både ineffektivt og vanskeligt at vedligeholde.
Postgre har bygget rækketyper som følger
- int4range - Vis rækkevidde af heltal
- int8range - Vis rækkevidde af bigint
- numrange - Viser det numeriske interval
- tstrange - Hjælper dig med at vise tidsstempel uden tidszone
- mærkeligt - Giver dig mulighed for at vise tidsstempel med tidszone
- datointerval - Datointerval
UUID-type
Universally Unique Identifies (UUID) er en 128-bit mængde, der genereres af en algoritme. Det er meget usandsynligt, at den samme identifikator vil blive genereret af en anden person i verden ved hjælp af den samme algoritme. Derfor er disse identifikatorer for de distribuerede systemer et ideelt valg, da det giver unikhed inden for en enkelt database. En UUID er skrevet som en gruppe af små og små hexadecimale cifre med forskellige grupper adskilt af bindestreger.
PostgreSQL har en indbygget UUID-datatype, der bruger 16 byte lager ... UUID er en ideel datatype til primære nøgler.
Eksempel:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre accepterer også alternative former for UUID-input som alle store bogstaver, ingen bindestreger, seler osv.
XML-type
PostgreSQL giver dig mulighed for at gemme XML-data i en datatype, men det er intet andet end en udvidelse til en tekstdatatype. Men fordelen er, at den kontrollerer, at input XML er velformet.
Eksempel:
XMLPARSE (DOCUMENT '') Data Type …
JSON Type
For at gemme JSON-data tilbyder PostgreSQL 2 datatyper
- JSON
- JSONB
json | Jsonb |
---|---|
En simpel udvidelse af en tekstdatatype med JSON-validering | En binær repræsentation af JSON-dataene |
Indsætningen er hurtig, men datahentning er relativt langsom. | Indsætningen er langsom, men vælg (datahentning er hurtig) |
Gemmer indtastede data nøjagtigt som det er inklusive mellemrum. | Understøtter indeksering. Kan optimere det hvide område for at gøre hentning hurtigere. |
Genbehandling af datahentning | Ingen genbehandling kræves ved datahentning |
Den mest anvendte JSON-datatype brugte os jsonb, medmindre der er noget specielt behov for at bruge 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 specielle formålsposter, der kaldes pseudotyper. Du kan ikke bruge pseudotyper som PostgreSQL-kolonnetyper. Der bruges til at erklære eller funktionens argument eller returneringstype.
Hver af de tilgængelige pseudotyper er nyttige i situationer, hvor en funktions adfærdsdokumenter ikke svarer til blot at tage eller returnere en værdi af en bestemt SQL-datatype.
Navn | Beskrivelse |
---|---|
Nogen | Funktionen accepterer alle inputdatatyper. |
Et array | Funktionen accepterer enhver matrixdatatype. |
Ethvert element | Funktionen accepterer enhver datatype. |
Enhver enum | Funktionen accepterer enhver enum-datatype. |
Nonarray | Funktionen accepterer enhver ikke-array datatype. |
Cstring | Funktion accepterer eller returnerer null-afsluttet C-streng. |
Indre | Intern funktion accepterer eller returnerer server-intern datatype. |
Sproghåndterer | Det erklæres at returnere sproghåndterer. |
Optage | Find en funktion, der returnerer en uspecificeret række. |
Udløser | En triggerfunktion bruges til at returnere triggeren. |
Det er vigtigt, at brugeren, der bruger denne funktion, skal sørge for, at funktionen fungerer korrekt, når en pseudo-type bruges som argumenttype.
Bedste fremgangsmåder ved brug af datatyper
- Brug "tekst" datatype, medmindre du vil begrænse input
- Brug aldrig "char".
- Heltal bruger "int." Brug kun bigint, når du har rigtig store tal
- Brug "numerisk" næsten altid
- Brug float i PostgreSQL, hvis du har IEEE 754 datakilde
Resumé
- PostgreSQL tilbyder et rigt sæt indfødte datatyper til brugere
- PostgreSQL understøtter karakterdatatyper til lagring af tekstværdier
- PostgreSQL understøtter to forskellige typer numre: 1. Heltal, 2. Flydende numre
- En binær streng er en række af bytes eller oktetter
- PostgreSQL har netværksadressetype, der hjælper dig med at optimere lagring af netværksdata
- Tekstsøgning PostgreSQL datastrukturer er designet til at understøtte søgning i fuld tekst
- Dato / klokkeslæt PSQL-datatyper tillader oplysninger om dato og klokkeslæt i forskellige formater
- Felttyper i boolske postgres kan indeholde tre værdier 1. Sand 2. Falsk 3. Nul
- Geometriske PostgreSQL-datatyper repræsenterer to-dimensionelle rumlige objekter
- Opregnede datatyper i PostgreSQL er nyttige til at repræsentere sjældent skiftende oplysninger såsom landekode eller filial-id
- Universally Unique Identifies (UUID) er en 128-bit mængde, der genereres af en algoritme
- PostgreSQL har mange specielle formålsposter, der kaldes pseudotyper
- Det er den bedste praksis at bruge datatypen "tekst", medmindre du vil begrænse input