PostgreSQL datatyper: Tegn - Numerisk - Binær - Boolsk

Indholdsfortegnelse:

Anonim

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

  1. Lagring af pladsbesparelse
  2. Inputfejlkontrol
  3. 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

  1. JSON
  2. 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