PostgreSQL Datatyper: Byte, Numerisk, Tegn, Binær
PostgreSQL tilbyder et rigt sæt af indbyggede datatyper til brugere. Brugere kan tilføje nye typer ved hjælp af CREATE TYPE-kommandoen. Det gør også forespørgsler enklere og mere læsbare.
Datatyper ind PostgreSQL
PostgreSQL understøtter følgende datatyper:
- Teksttyper
- Numeriske typer
- Datoer og tider
- XML
- JSON
- Boolesk
- Bits
- Binære data
- Netværk
- Arrays
- Opret din datatype
- Boolesk
- Midlertidig
- UUID
- Array
- JSON
- Særlige datatyper til lagring af en netværksadresse og geometriske data.
Lad os studere PostgreSQL datatyper i detaljer
Tegn Datatyper
PostgreSQL understøtter tegndatatyper til lagring af tekstværdier. PostgreSQL bygger karakterdatatyper ud fra de samme interne strukturer. PostgreSQL tilbyder tre tegndatatyper: CHAR(n), VARCHAR(n) og TEXT.
Navn | Description |
---|---|
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 tal:
- Heltal
- Flydende kommatal
Navn | Butiksstørrelse | Rækkevidde |
---|---|---|
smallint | 2 bytes | -32768 til + 32767 |
heltal | 4 bytes | -2147483648 til + 2147483647 |
bigint | 8 bytes | -9223372036854775808 til 9223372036854775807 |
decimal | variabel | Hvis du erklærede det som decimal, varierer datatypen fra 131072 cifre før decimalkommaet til 16383 cifre efter decimalkommaet |
numerisk | variabel | Hvis du erklærer det som nummeret, kan du inkludere nummer op til 131072 cifre før decimalkommaet til 16383 cifre efter decimaltegnet |
ægte | 4 bytes | 6 decimalcifre præcision |
fordoble | 8 bytes | 15 decimalcifre 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-printbare oktetter
Tegnstrenge tillader ikke nul oktetter og tillader også andre oktetværdier og sekvenser, som er ugyldige i henhold til databasens tegnsætkodningsregler.
Navn | Opbevaringsstørrelse | Description |
---|---|---|
Byte | 1 til 4 bytes plus størrelsen af den binære streng | Binær streng med variabel længde |
Netværksadressetype
Mange applikationer gemmer netværksoplysninger som IP-adresser på brugere eller sensorer. PostgreSQL har tre indbyggede typer, som hjælper dig med at optimere netværksdataene.
Navn | Størrelse | Description |
---|---|---|
cider | 7 eller 19 bytes | IPV4 og IPv6 net |
Inet | 7 eller 19 bytes | IPV4 og IPV5 vært og netværk |
macaddr | 6 bytes | MAC-adresser |
Brug af netværksadressetyper har følgende fordele
- Lagerpladsbesparelse
- Kontrol af inputfejl
- Funktioner som at søge data efter undernet
Tekstsøgningstype
PostgreSQL giver to datatyper, som er designet til at understøtte fuldtekstsøgning. Fuldtekstsøgning er at søge gennem en samling af dokumenter på naturligt sprog for at søge i dem, der bedst matcher en forespørgsel.
- Tsvector tekstsøgning PostgreSQL variabeltyper repræsenterer et dokument i en form, der er optimeret til tekstsøgning
- Forespørgselstypen tekstsøgning gemmer de søgeord, der skal søges efter
Dato/klokkeslæt Datatyper
PostgreSQL timestamp tilbyder mikrosekund præcision i stedet for anden præcision. Derudover har du også mulighed for at gemme med eller uden tidszone. PostgreSQL vil konvertere tidsstempel med tidszone til UTC på input og gemme det.
Indtastning af dato og klokkeslæt accepteres i forskellige formater, herunder traditionel Postgres, ISO 8601. SQL-kompatibel mm.
PostgreSQL understøtter dag / måned / år bestilling. Understøttede formater er DMY, MDY, YMD
Tidsmæssige datatyper
Navn | Størrelse | Rækkevidde | Løsning |
---|---|---|---|
Tidsstempel uden tidszone | 8 bytes | 4713 f.Kr. til 294276 e.Kr | 1 mikrosekund/14 cifre |
Tidsstempel med tidszone | 8 bytes | 4713 f.Kr. til 294276 e.Kr | 1 mikrosekund/14 cifre |
dato | 4 bytes | 4713 f.Kr. til 294276 e.Kr | En dag |
Tid uden tidszone | 8 bytes | 00:00:00 to 24:00:00 | 1 mikrosekund/14 cifre |
Tid med tidszone | 12 bytes | 00:00:00 + 1459 til 24:00:00-1459 | 1 mikrosekund/14 cifre |
Interval | 12 bytes | -178000000 til 178000000 år | 1 mikrosekund/14 cifre |
Eksempler
Input | Description |
---|---|
2025-09-07 | ISO 8601, 7. september med enhver datostil (anbefalet format) |
September 7, 2025 | 7. september med enhver 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 enhver datostil |
7. september 2018 | 7. september med enhver datostil |
7-Sep-25 | 7. september 2025 med YMD |
20250907 | ISO 8601,7 sep 20225 i enhver tilstand |
2025.250 | år og dag på året, i dette tilfælde 7. september 2025 |
J25250 | Julian dato |
Tid/tid med tidszoneindgang
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 | tidszone angivet som EST, samme som 11:19 EST |
boolesk type
En boolsk datatype kan holde
- Sand
- False
- null
værdier.
Du bruger en bool or boolean nøgleord for at erklære en kolonne med den boolske 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
- False
konverteres til 0
Mens du vælger data, konverteres værdierne igen til yes, true, y osv.
Geometriske datatyper
Geometriske datatyper repræsenterer todimensionelle rumlige objekter. De hjælper med at udføre operationer som rotationer, skalering, translation osv.
Navn | Opbevaringsstørrelse | Repræsentation | Description |
---|---|---|---|
Punkt | 16 bytes | Peg på et fly | (x, y) |
Line (linje) | 32 bytes | Uendelig linje | ((xl.yl).(x2.y2)) |
Lseg | 32 bytes | Afgrænset linjesegment | ((xl.yl).(x2.y2)) |
Box | 32 bytes | Rektangulær Box | ((xl.yl).(x2.y2)) |
Sti | 16n + 16n bytes | Luk og åbn sti | ((xl.yl),...) |
Polygon | 40 + 16n bytes | Polygon | [(xl.yl)….] |
Circle | 24 bytes | Circle | <(xy).r> (midtpunkt og radius) |
Opregnede Typer
Opregnet PostgreSQL datatypen er nyttig til at repræsentere sjældent skiftende oplysninger såsom landekode eller filial-id. Den optalte datatype er repræsenteret i en tabel med fremmednøgler for at sikre dataintegritet.
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 svært at vedligeholde.
Postgre har bygget sortimentstyper som følger
- int4range — Vis rækkevidde af heltal
- int8range — Vis rækkevidde af bigint
- numrange — Viser det numeriske område
- tstrange — Hjælper dig med at vise tidsstempel uden tidszone
- mærkelig — Giver dig mulighed for at vise tidsstempel med tidszone
- datointerval — datointerval
UUID type
Universally Unique Identifies (UUID) er en 128-bit mængde, som genereres af en algoritme. Det er meget usandsynligt, at den samme identifikator vil blive genereret af en anden person i verden, der bruger den samme algoritme. Det er derfor, for de distribuerede systemer, disse identifikatorer er et ideelt valg, da det tilbyder unikhed i en enkelt database. Et UUID er skrevet som en gruppe af små hexadecimale cifre med forskellige grupper adskilt af bindestreger.
PostgreSQL har en indbygget UUID-datatype, som bruger 16 bytes lagerplads. UUID er en ideel datatype til primærnøgler.
Eksempel
d5f28c97-b962-43be-9cf8-ca1632182e8e
Postgre accepterer også alternative former for UUID-input som alle store bogstaver, ingen bindestreger, klammeparenteser osv.
XML-type
PostgreSQL giver dig mulighed for at gemme XML-data i en datatype, men det er ikke andet end en udvidelse til en tekstdatatype. Men fordelen er, at den kontrollerer, at input-XML'en er veludformet.
Eksempel
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
JSON type
For at gemme JSON-data PostgreSQL tilbyder 2 datatyper
- JSON
- JSONB
json | Jsonb |
---|---|
En simpel udvidelse af en tekstdatatype med JSON-validering | En binær repræsentation af JSON-dataene |
Indsættelse er hurtig, men datahentning er relativt langsom. | Indsæt er langsomt, men vælg (datahentning er hurtig) |
Gemmer indtastede data præcis, som de er inklusive blanktegn. | Understøtter indeksering. Kan optimere mellemrummet for at gøre hentning hurtigere. |
Genbehandling ved datahentning | Ingen genbehandling påkrævet ved datahentning |
Den mest udbredte JSON-datatype brugte os jsonb, medmindre der er et eller andet specialiseret 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 særlige formål, der kaldes pseudo-typer. Du kan ikke bruge pseudo-typer som PostgreSQL kolonnetyper. Der bruges til at erklære eller funktions argument eller returtype.
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 | Description |
---|---|
Enhver | Funktionen accepterer alle inputdatatyper. |
Et array | Funktionen accepterer enhver array-datatype. |
Ethvert element | Funktionen accepterer enhver datatype. |
Enhver opregning | Funktionen accepterer enhver enum datatype. |
Ikke-array | Funktionen accepterer enhver ikke-matrix datatype. |
Cstring | Funktionen accepterer eller returnerer nul-termineret C-streng. |
Intern | Intern funktion accepterer eller returnerer serverintern datatype. |
Language_handler | Det erklæres at returnere sproghandler. |
Optage | Find en funktion, som returnerer en uspecificeret rækketype. |
Udløser | En triggerfunktion bruges til at returnere trigger. |
Det er vigtigt, at brugeren, der bruger denne funktion, skal sikre sig, at funktionen vil opføre sig sikkert, når en pseudo-type bruges som argumenttype.
Bedste øver sig i at bruge 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 in PostgreSQL hvis du har IEEE 754 datakilde
Resumé
- PostgreSQL tilbyder et rigt sæt af indbyggede datatyper til brugere
- PostgreSQL understøtter tegndatatyper til lagring af tekstværdier
- PostgreSQL understøtter to forskellige typer tal: 1. Heltal, 2. Flydende kommatal
- En binær streng er en sekvens af bytes eller oktetter
- PostgreSQL har netværksadressetype for at hjælpe dig med at optimere lagring af netværksdata
- Tekstsøgning PostgreSQL datastrukturer er designet til at understøtte fuldtekstsøgning
- Dato/klokkeslæt PSQL-datatyper tillader dato- og tidsinformation i forskellige formater
- Boolean Postgres-felttyper kan indeholde tre værdier 1. Sand 2. Falsk 3. Null
- Geometrisk PostgreSQL datatyper repræsenterer todimensionelle rumlige objekter
- Opregnede datatyper ind PostgreSQL er nyttig 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 særlige formål, der kaldes pseudo-typer
- Det er bedste praksis at bruge "tekst" datatype, medmindre du ønsker at begrænse input