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
- Economie de spaศiu de stocare
- Verificarea erorilor de intrare
- 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')
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
- JSON
- 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
