PostgreSQL Tipuri de date: octet, numeric, caracter, binar

PostgreSQL oferฤƒ un set bogat de tipuri de date native pentru utilizatori. Utilizatorii pot adฤƒuga noi tipuri cu ajutorul comenzii CREATE TYPE. De asemenea, face interogฤƒrile mai simple ศ™i mai lizibile.

Tipuri de date รฎn PostgreSQL

PostgreSQL acceptฤƒ urmฤƒtoarele tipuri de date:

  • Tipuri de text
  • Tipuri numerice
  • Datele ศ™i orele
  • XML
  • JSON
  • boolean
  • biลฃi
  • Date binare
  • Reลฃea
  • Arrays
  • Creaศ›i tipul dvs. de date
  • boolean
  • temporal
  • UUID
  • Mulศ›ime
  • JSON
  • Tipuri speciale de date pentru stocarea unei adrese de reศ›ea ศ™i a datelor geometrice.

Sa invatam PostgreSQL tipuri de date รฎn detaliu

Tipuri de date de caractere

PostgreSQL acceptฤƒ tipuri de date caracter pentru stocarea valorilor text. PostgreSQL construieศ™te tipuri de date de caractere din aceleaศ™i structuri interne. PostgreSQL oferฤƒ trei tipuri de date de caractere: CHAR(n), VARCHAR(n) ศ™i TEXT.

Nume Descriere
varchar(n) Vฤƒ permite sฤƒ declaraศ›i lungimea variabilฤƒ cu o limitฤƒ
Char(n) Lungime fixฤƒ, cฤƒptuศ™itฤƒ goalฤƒ
Text Utilizarea poate folosi acest tip de date pentru a declara o variabilฤƒ cu lungime nelimitatฤƒ

Tipuri de date numerice

PostgreSQL acceptฤƒ douฤƒ tipuri distincte de numere:

  • รŽntregi
  • Numere รฎn virgulฤƒ mobilฤƒ
Nume Dimensiunea magazinului Gamฤƒ
smallint Bytes 2 -32768 la + 32767
รฎntreg Bytes 4 -2147483648 la + 2147483647
bigint Bytes 8 -9223372036854775808 9223372036854775807 a
zecimal variabil Dacฤƒ l-aศ›i declarat ca tip de date zecimal, variazฤƒ de la 131072 de cifre รฎnainte de virgulฤƒ zecimalฤƒ la 16383 de cifre dupฤƒ virgulฤƒ zecimalฤƒ
numeric variabil Dacฤƒ รฎl declaraศ›i ca numฤƒr, puteศ›i include un numฤƒr de pรขnฤƒ la 131072 de cifre รฎnainte de virgulฤƒ zecimalฤƒ pรขnฤƒ la 16383 de cifre dupฤƒ virgulฤƒ zecimalฤƒ
real Bytes 4 Precizie de 6 cifre zecimale
dubla Bytes 8 Precizie de 15 cifre zecimale

Tipuri de date binare

Un ศ™ir binar este o secvenศ›ฤƒ de octeศ›i sau octeศ›i. Tipurile de date binare Postgres sunt รฎmpฤƒrศ›ite รฎn douฤƒ moduri.

  • ศ˜irurile binare permit stocarea cotelor de valoare zero
  • Octeศ›i neprintabili

ศ˜irurile de caractere nu permit zero octeศ›i ศ™i, de asemenea, nu permit orice alte valori ศ™i secvenศ›e de octet care sunt invalide conform regulilor de codificare ale setului de caractere ale bazei de date.

Nume Dimensiunea stocฤƒrii Descriere
Byte 1 pรขnฤƒ la 4 octeศ›i plus dimensiunea ศ™irului binar ศ˜ir binar de lungime variabilฤƒ

Tip de adresฤƒ de reศ›ea

Multe aplicaศ›ii stocheazฤƒ informaศ›ii de reศ›ea, cum ar fi adrese IP ale utilizatorilor sau senzori. PostgreSQL are trei tipuri native care vฤƒ ajutฤƒ sฤƒ optimizaศ›i datele din reศ›ea.

Nume Mฤƒrimea Descriere
cidru 7 sau 19 octeศ›i IPV4 ศ™i IPv6 reศ›ele
Inet 7 sau 19 octeศ›i Gazdฤƒ ศ™i reศ›ele IPV4 ศ™i IPV5
macaddr Bytes 6 Adrese MAC

Utilizarea tipurilor de adrese de reศ›ea are urmฤƒtoarele avantaje

  1. Economie de spaศ›iu de stocare
  2. Verificarea erorilor de intrare
  3. Funcศ›ioneazฤƒ precum cฤƒutarea datelor dupฤƒ subreศ›ea

Tip de cฤƒutare text

PostgreSQL furnizeazฤƒ douฤƒ tipuri de date care sunt concepute pentru a sprijini cฤƒutarea full-text. Cฤƒutarea full-text รฎnseamnฤƒ cฤƒutarea printr-o colecศ›ie de documente รฎn limbaj natural pentru a le cฤƒuta pe cele care se potrivesc cel mai bine cu o interogare.

  • Cฤƒutare text Tsvector PostgreSQL tipurile de variabile reprezintฤƒ un document รฎntr-o formฤƒ optimizatฤƒ pentru cฤƒutarea textului
  • Cฤƒutarea text tip interogare stocheazฤƒ cuvintele cheie care trebuie cฤƒutate

Tipuri de date Data/Ora

PostgreSQL marca temporalฤƒ oferฤƒ precizie de microsecunde รฎn loc de precizie de secundฤƒ. Mai mult, aveศ›i ศ™i opศ›iunea de stocare cu fus orar sau fฤƒrฤƒ. PostgreSQL va converti marca temporalฤƒ cu fusul orar รฎn UTC la intrare ศ™i o va stoca.

Introducerea datei ศ™i orei este acceptatฤƒ รฎn diferite formate, inclusiv Postgres tradiศ›ional, ISO 8601. Compatibil cu SQL etc.

PostgreSQL acceptฤƒ comanda Zi/Lunฤƒ/An. Formatele acceptate sunt DMY, MDY, YMD

Tipuri de date temporale

Nume Mฤƒrimea Gamฤƒ Rezoluลฃie
Marca temporalฤƒ fฤƒrฤƒ fus orar Bytes 8 4713 รฎ.Hr. pรขnฤƒ la 294276 d.Hr 1 microsecundฤƒ/14 cifre
Marca temporalฤƒ cu fusul orar Bytes 8 4713 รฎ.Hr. pรขnฤƒ la 294276 d.Hr 1 microsecundฤƒ/14 cifre
data Bytes 4 4713 รฎ.Hr. pรขnฤƒ la 294276 d.Hr Intr-o zi
Ora fฤƒrฤƒ fus orar Bytes 8 00:00:00 to 24:00:00 1 microsecundฤƒ/14 cifre
Ora cu fusul orar Bytes 12 00:00:00 + 1459 pรขnฤƒ la 24:00:00-1459 1 microsecundฤƒ/14 cifre
Interval Bytes 12 -178000000 pรขnฤƒ la 178000000 ani 1 microsecundฤƒ/14 cifre

Exemple

Intrare Descriere
2025-09-07 ISO 8601, 7 septembrie cu orice stil de datฤƒ (format recomandat)
7 Septembrie, 2025 7 septembrie cu orice stil de รฎntรขlnire
9/7/2025 7 septembrie cu MDY, 9 iulie cu DMY
9/7/25 7 septembrie 2025, cu MDY
2025-Sep-7 7 septembrie cu orice stil de รฎntรขlnire
7-sept-2018 7 septembrie cu orice stil de รฎntรขlnire
7-Sep-25 7 septembrie 2025, cu YMD
20250907 ISO 8601,7, 20225 septembrie XNUMX รฎn orice mod
2025.250 anul ศ™i ziua anului, รฎn acest caz, 7 septembrie 2025
J25250 รฎntรขlnire cu Julian

Ora/Ora cu intrare fus orar

Intrare Descriere
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM La fel ca 11:19
11: 19 PM la fel ca 23:19
23: 19-3
23: 19-03: 00
231900-03
ISO 8601, la fel ca 11:19 EST
23: 19 EST fus orar specificat ca EST, la fel ca 11:19 EST

Tip boolean

Un tip de date boolean poate pฤƒstra

  • Adevฤƒrat
  • Fals
  • zero

valori.

Foloseศ™ti un bool or boolean cuvรขnt cheie pentru a declara o coloanฤƒ cu tipul de date boolean.

Cรขnd inseraศ›i valori รฎntr-o coloanฤƒ booleanฤƒ, Postgre converteศ™te valori precum

  • Da
  • y
  • 1
  • t
  • adevฤƒrat

รฎn 1.

รŽn timp ce valori ca

  • Nu
  • N
  • 0
  • F
  • Fals

sunt convertite la 0

รŽn timpul selectฤƒrii datelor, valorile sunt din nou convertite รฎn yes, true, y etc.

Tipuri de date geometrice

Tipurile de date geometrice reprezintฤƒ obiecte spaศ›iale bidimensionale. Ele ajutฤƒ la efectuarea de operaศ›iuni precum rotaศ›ii, scalare, translaศ›ie etc.

Nume Dimensiunea stocฤƒrii Reprezentare Descriere
Punct Bytes 16 Punct pe un avion (X y)
Linie Bytes 32 Linie infinitฤƒ ((xl.yl ).(x2.y2))
Lseg Bytes 32 Segment de linie finitฤƒ ((xl.yl ).(x2.y2))
Box Bytes 32 Dreptunghiular Box ((xl.yl ).(x2.y2))
Cale 16n + 16n octeศ›i รŽnchideศ›i ศ™i deschideศ›i Calea ((xl.yl),โ€ฆ)
Poligon 40 + 16n octeศ›i Poligon [(xl.yl)โ€ฆ.]
Cerc Bytes 24 Cerc <(xy).r> (punctul central ศ™i raza)

Tipuri enumerate

Enumerate PostgreSQL tipul de date este util pentru a reprezenta informaศ›ii care se modificฤƒ rar, cum ar fi codul de ศ›arฤƒ sau id-ul sucursalei. Tipul de date enumerate este reprezentat รฎntr-un tabel cu chei strฤƒine pentru a asigura integritatea datelor.

Exemplu

Culoarea pฤƒrului este destul de staticฤƒ รฎntr-o bazฤƒ de date demograficฤƒ

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Tipuri enumerate

Tipul intervalului

Multe aplicaศ›ii de afaceri necesitฤƒ date รฎn intervale. De obicei, douฤƒ coloane (de exemplu: data de รฎnceput, data de รฎncheiere) sunt definite pentru a trata intervalele. Acest lucru este atรขt ineficient, cรขt ศ™i dificil de รฎntreศ›inut.

Postgre a construit tipuri de gamฤƒ dupฤƒ cum urmeazฤƒ

  • int4range โ€” Afiศ™eazฤƒ intervalul รฎntregului
  • int8range โ€” Afiศ™eazฤƒ intervalul de bigint
  • numrange โ€” Afiศ™eazฤƒ intervalul numeric
  • tstrange โ€” Vฤƒ ajutฤƒ sฤƒ afiศ™aศ›i marcajul de timp fฤƒrฤƒ fus orar
  • ciudat โ€” Vฤƒ permite sฤƒ afiศ™aศ›i marcaj de timp cu fusul orar
  • interval de date โ€” Interval de date

tip UUID

Universally Unique Identifies (UUID) este o cantitate de 128 de biศ›i care este generatฤƒ de un algoritm. Este foarte puศ›in probabil ca acelaศ™i identificator sฤƒ fie generat de o altฤƒ persoanฤƒ din lume folosind acelaศ™i algoritm. De aceea, pentru sistemele distribuite, aceศ™ti identificatori sunt o alegere idealฤƒ, deoarece oferฤƒ unicitate รฎntr-o singurฤƒ bazฤƒ de date. Un UUID este scris ca un grup de cifre hexazecimale minuscule, cu diferite grupuri separate prin cratime.

PostgreSQL are un tip de date UUID nativ care consumฤƒ 16 octeศ›i de stocare. UUID este un tip de date ideal pentru cheile primare.

Exemplu

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre acceptฤƒ, de asemenea, forme alternative de intrฤƒri UUID, cum ar fi toate majusculele, fฤƒrฤƒ cratime, acolade etc.

tip XML

PostgreSQL vฤƒ permite sฤƒ stocaศ›i date XML รฎntr-un tip de date, dar nu este altceva decรขt o extensie a unui tip de date text. Dar avantajul este cฤƒ verificฤƒ dacฤƒ XML-ul de intrare este bine format.

Exemplu

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

Tip JSON

Pentru a stoca date JSON PostgreSQL oferฤƒ 2 tipuri de date

  1. JSON
  2. JSONB
JSON Jsonb
O extensie simplฤƒ a unui tip de date text cu validare JSON O reprezentare binarฤƒ a datelor JSON
Inserarea este rapidฤƒ, dar recuperarea datelor este relativ lentฤƒ. Inserarea este lentฤƒ, dar selectaศ›i (recuperarea datelor este rapidฤƒ)
Salveazฤƒ datele introduse exact aศ™a cum includ spaศ›iile albe. Suporta indexarea. Poate optimiza spaศ›iul alb pentru a face recuperarea mai rapidฤƒ.
Reprocesare la preluarea datelor Nu este necesarฤƒ reprocesarea la preluarea datelor

Cel mai utilizat tip de date JSON ne-a folosit jsonb, cu excepศ›ia cazului รฎn care existฤƒ o nevoie specializatฤƒ de a folosi tipul de date JSON.

Exemplu

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-tipuri

PostgreSQL are multe intrฤƒri cu scop special care sunt numite pseudo-tipuri. Nu puteศ›i folosi pseudo-tipuri ca PostgreSQL tipuri de coloane. Sunt folosite pentru a declara sau a argumentului funcศ›iei sau a tipului de returnare.

Fiecare dintre pseudo-tipurile disponibile este util รฎn situaศ›iile รฎn care documentele de comportament ale unei funcศ›ii nu corespund pur ศ™i simplu cu luarea sau returnarea unei valori a unui anumit tip de date SQL.

Nume Descriere
Orice Funcศ›ia acceptฤƒ toate tipurile de date de intrare.
O matrice Funcศ›ia acceptฤƒ orice tip de date matrice.
Orice element Funcศ›ia acceptฤƒ orice tip de date.
Orice enumerare Funcศ›ia acceptฤƒ orice tip de date enumerare.
Nonarray Funcศ›ia acceptฤƒ orice tip de date non-matrice.
Cstring Funcศ›ia acceptฤƒ sau returneazฤƒ ศ™irul C terminat cu nul.
Intern Funcศ›ia internฤƒ acceptฤƒ sau returneazฤƒ tipul de date intern al serverului.
Handler_lingv Este declarat cฤƒ returneazฤƒ handler-ul de limbฤƒ.
Record Gฤƒsiศ›i o funcศ›ie care returneazฤƒ un tip de rรขnd nespecificat.
trฤƒgaci O funcศ›ie de declanศ™are este utilizatฤƒ pentru a returna declanศ™atorul.

Este important ca utilizatorul care foloseศ™te aceastฤƒ funcศ›ie trebuie sฤƒ se asigure cฤƒ funcศ›ia se va comporta รฎn siguranศ›ฤƒ atunci cรขnd un pseudo-tip este folosit ca tip de argument.

Cele mai bune practici folosind tipuri de date

  • Utilizaศ›i tipul de date โ€žtextโ€, cu excepศ›ia cazului รฎn care doriศ›i sฤƒ limitaศ›i intrarea
  • Nu folosi niciodatฤƒ โ€žcharโ€.
  • Numerele รฎntregi folosesc โ€žintโ€. Folosiศ›i bigint numai atunci cรขnd aveศ›i numere foarte mari
  • Folosiศ›i โ€žnumericโ€ aproape รฎntotdeauna
  • Folosiศ›i float-ul PostgreSQL dacฤƒ aveศ›i sursฤƒ de date IEEE 754

Rezumat

  • PostgreSQL oferฤƒ un set bogat de tipuri de date native pentru utilizatori
  • PostgreSQL acceptฤƒ tipuri de date caracter pentru stocarea valorilor text
  • PostgreSQL acceptฤƒ douฤƒ tipuri distincte de numere: 1. Numere รฎntregi, 2. Numere รฎn virgulฤƒ mobilฤƒ
  • Un ศ™ir binar este o secvenศ›ฤƒ de octeศ›i sau octeศ›i
  • PostgreSQL are tip de adresฤƒ de reศ›ea pentru a vฤƒ ajuta sฤƒ optimizaศ›i stocarea datelor din reศ›ea
  • Cฤƒutare text PostgreSQL structurile de date sunt concepute pentru a sprijini cฤƒutarea full-text
  • Data/Ora Tipurile de date PSQL permit informaศ›ii despre datฤƒ ศ™i orฤƒ รฎn diferite formate
  • Tipurile de cรขmpuri Boolean Postgres pot conศ›ine trei valori 1. Adevฤƒrat 2. Fals 3. Nul
  • Geometric PostgreSQL tipurile de date reprezintฤƒ obiecte spaศ›iale bidimensionale
  • Tipuri de date enumerate รฎn PostgreSQL este util pentru reprezentarea informaศ›iilor care se modificฤƒ rar, cum ar fi codul de ศ›arฤƒ sau id-ul sucursalei
  • Universally Unique Identifies (UUID) este o cantitate de 128 de biศ›i care este generatฤƒ de un algoritm
  • PostgreSQL are multe intrฤƒri cu scop special care sunt numite pseudo-tipuri
  • Este cea mai bunฤƒ practicฤƒ sฤƒ utilizaศ›i tipul de date โ€žtextโ€, cu excepศ›ia cazului รฎn care doriศ›i sฤƒ limitaศ›i intrarea

Rezumaศ›i aceastฤƒ postare cu: