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 ușor de citit.
Tipuri de date în PostgreSQL
PostgreSQL acceptă următoarele tipuri de date:
- Tipuri de text
- Tipuri numerice
- Date și ore
- XML
- JSON
- Boolean
- Biți
- Date binare
- Reţea
- Matrice
- Creați tipul de date
- Boolean
- Temporal
- UUID
- Matrice
- JSON
- Tipuri speciale de date pentru stocarea unei adrese de rețea și date geometrice.
Să studiem în detaliu tipurile de date PostgreSQL
- Tipuri de date de caracter
- Tipuri de date numerice
- Tipuri de date binare
- Tipul adresei de rețea
- Tipul de căutare text
- Tipuri de date Data / Ora
- Tip boolean
- Tipuri de date geometrice
- Tipuri enumerate
- Tipul intervalului
- Tip UUID
- Tipul XML
- Tip JSON
- Pseudo-tipuri
Tipuri de date de caracter
PostgreSQL acceptă tipuri de date de caractere pentru stocarea valorilor textului. 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 gol |
Text | Utilizarea poate utiliza acest tip de date pentru a declara o variabilă cu lungime nelimitată |
Tipuri de date numerice
PostgreSQL acceptă două tipuri distincte de numere:
- Numere întregi
- Numere în virgulă mobilă
Nume | Dimensiunea magazinului | Gamă |
---|---|---|
smallint | 2 octeți | -32768 până la +32767 |
întreg | 4 octeți | -2147483648 până la +2147483647 |
bigint | 8 octeți | -9223372036854775808 la 9223372036854775807 |
zecimal | variabil | Dacă l-ați declarat ca tip de date zecimal variază de la 131072 cifre înainte de punctul zecimal la 16383 cifre după punctul zecimal |
numeric | variabil | Dacă îl declarați ca număr, puteți include un număr de până la 131072 cifre înainte de punctul zecimal la 16383 cifre după punctul zecimal |
real | 4 octeți | 6 cifre zecimale de precizie |
dubla | 8 octeți | Precizie de 15 cifre zecimale |
Tipuri de date binare
Un șir binar este o secvență de octeți sau octeți. Tipurile de date postgre binare sunt împărțite în două moduri.
- Șirurile binare permit stocarea cotelor de valoare zero
- Octeti neprimabili
Șirurile de caractere nu permit zero octeți și, de asemenea, interzice orice alte valori și secvențe de octet care sunt nevalide conform regulilor de codificare a setului de caractere al bazei de date.
Nume | Dimensiunea stocării | Descriere |
---|---|---|
Octet | 1 până la 4 octeți plus dimensiunea șirului binar | Șir binar de lungime variabilă |
Tipul adresei de rețea
Multe aplicații stochează informații despre rețea, cum ar fi adresa IP a utilizatorilor sau
senzori. PostgreSQL are trei tipuri native care vă ajută să optimizați datele de rețea.
Nume | mărimea | Descriere |
---|---|---|
cidru | 7 sau 19 bye | Rețele IPV4 și IPv6 |
Inet | 7 sau 19 octeți | IPV4 și IPV5 gazdă și rețele |
macaddr | 6 octeți | Adrese MAC |
Utilizarea tipurilor de adrese de rețea are următoarele avantaje
- Economie de spațiu de stocare
- Verificarea erorilor de intrare
- Funcții precum căutarea datelor prin subrețea
Tipul de căutare text
PostgreSQL oferă două tipuri de date care sunt concepute pentru a sprijini căutarea textului complet. Căutarea textului integral este căutarea printr-o colecție de documente în limbaj natural pentru a căuta pe cele care se potrivesc cel mai bine unei interogări.
- Căutare text Tsvector Tipurile de variabile PostgreSQL reprezintă un document într-o formă optimizată pentru căutare text
- Căutarea textului de tip interogare stochează cuvintele cheie care trebuie căutate
Tipuri de date Data / Ora
Eticheta de timp PostgreSQL oferă precizie de microsecundă în loc de a doua precizie. Mai mult, aveți și opțiunea de a stoca cu fus orar sau fără. PostgreSQL va converti marcajul de timp cu fusul orar în UTC la intrare și îl va stoca.
Introducerea datei și orei este acceptată în diverse formate, inclusiv Postgres tradițional, ISO 8601. Compatibil cu SQL etc.
PostgreSQL acceptă comenzile pe zi / lună / an. Formatele acceptate sunt DMY, MDY, YMD
Tipuri de date temporale
Nume | mărimea | Gamă | Rezoluţie |
---|---|---|---|
Timestamp fără fus orar | 8 octeți | 4713 î.Hr. până la 294276 d.Hr. | 1 microsecundă / 14 cifre |
Timestamp cu fus orar | 8 octeți | 4713 î.Hr. până la 294276 d.Hr. | 1 microsecundă / 14 cifre |
Data | 4 octeți | 4713 î.Hr. până la 294276 d.Hr. | Într-o zi |
Timp fără fus orar | 8 octeți | 00:00:00 - 24:00:00 | 1 microsecundă / 14 cifre |
Ora cu fusul orar | 12 octeți | 00:00:00 + 1459 - 24: 00: 00-1459 | 1 microsecundă / 14 cifre |
Interval | 12 octeți | -178000000 la 178000000 de 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 |
07.09.2025 | 7 septembrie cu MDY, 9 iulie cu DMY |
25.09.07 | 7 septembrie 2025, cu MDY |
2025-septembrie-7 | 7 septembrie cu orice stil de întâlnire |
7 septembrie 2018 | 7 septembrie cu orice stil de întâlnire |
7-septembrie-25 | 7 septembrie 2025, cu YMD |
20250907 | ISO 8601,7 Sep 20225 î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 |
23:19 | la fel ca 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, la fel ca la 23:19 EST |
23:19 EST | fusul orar specificat ca EST, la fel ca la 23:19 EST |
Tip boolean
Un tip de date boolean poate conține
- Adevărat
- Fals
- nul
valori.
Utilizați un bool sau boolean cuvinte cheie pentru a declara o coloană cu tipul de date boolean.
Când introduceți valori într-o coloană booleană, Postgre convertește valori precum
- da
- y
- 1
- t
- Adevărat
în 1.
În timp ce valori precum
- Nu
- N
- 0
- F
- Fals
sunt convertite la 0
La selectarea datelor, valorile sunt din nou convertite înapoi la da, adevărat, y etc.
Tipuri de date geometrice
Tipurile de date geometrice reprezintă obiecte spațiale bidimensionale. Ele ajută la efectuarea de operații precum rotații, scalare, translație etc.
Nume | Dimensiunea stocării | Reprezentare | Descriere |
---|---|---|---|
Punct | 16 octeți | Arată pe un avion | (X y) |
Linia | 32 octeți | Linie infinită | ((xl.yl). (x2.y2)) |
Lseg | 32 octeți | Segment de linie finită | ((xl.yl). (x2.y2)) |
Cutie | 32 octeți | Cutie dreptunghiulară | ((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 | 24 octeți | Cerc | <(xy) .r> (punctul central și raza) |
Tipuri enumerate
Tipul de date PostgreSQL enumerat este util pentru reprezentarea informațiilor care se schimbă rar, cum ar fi codul țării sau codul 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 (exemplu: data de începere, data de sfârșit) sunt definite pentru a face față intervalelor. 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ă gama bigint
- numrange - Afișează intervalul numeric
- tstrange - Vă ajută să afișați marca de timp fără fus orar
- ciudat - Vă permite să afișați marca de timp cu fusul orar
- interval de date - Interval de date
Tip UUID
Identificările unice universale (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 cu litere mici, 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.
Tipul XML
PostgreSQL vă permite să stocați date XML într-un tip de date, dar nu este altceva decât o extensie la un tip de date text. Dar avantajul este că verifică dacă intrarea XML este bine formată.
Exemplu:
XMLPARSE (DOCUMENT '') Data Type …
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ă. | Insertul este lent, dar selectați (recuperarea datelor este rapidă) |
Salvează datele introduse exact așa cum sunt acestea, inclusiv spațiul alb. | Sprijină indexarea. Poate optimiza spațiul alb pentru a face recuperarea mai rapidă. |
Reprocesarea la recuperarea datelor | Nu este necesară reprocesarea la recuperarea datelor |
Cel mai utilizat tip de date JSON ne-a folosit jsonb, cu excepția cazului în care există o nevoie specializată de a utiliza 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 destinație specială care se numesc pseudo-tipuri. Nu puteți utiliza pseudo-tipuri ca tipuri de coloane PostgreSQL. Sunt folosite pentru a declara sau a argumenta 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 luării sau returnării 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 enumere | Funcția acceptă orice tip de date enum. |
Nonarray | Funcția acceptă orice tip de date non-matrice. |
Cstring | Funcția acceptă sau returnează șirul C terminat nul. |
Intern | Funcția internă acceptă sau returnează tipul de date interne ale serverului. |
Language_handler | Se declară că returnează gestionarul de limbă. |
Record | Găsiți o funcție care returnează un tip de rând nespecificat. |
Declanșator | O funcție de declanșare este utilizată pentru a reveni la declanșator. |
Este important ca utilizatorul care folosește această funcție 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 tipurile de date
- Folosiți tipul de date „text”, cu excepția cazului în care doriți să limitați intrarea
- Nu folosiți niciodată „char”.
- Numerele întregi folosesc „int”. Folosiți bigint numai atunci când aveți numere foarte mari
- Folosiți „numeric” aproape întotdeauna
- Utilizați float în PostgreSQL dacă aveți sursa de date IEEE 754
rezumat
- PostgreSQL oferă un set bogat de tipuri de date native pentru utilizatori
- PostgreSQL acceptă tipuri de date de caractere pentru stocarea valorilor textului
- PostgreSQL acceptă două tipuri distincte de numere: 1. Numere întregi, 2. Numere cu virgulă mobilă
- Un șir binar este o secvență de octeți sau octeți
- PostgreSQL are un tip de adresă de rețea pentru a vă ajuta să optimizați stocarea datelor de rețea
- Căutare text Structurile de date PostgreSQL sunt concepute pentru a sprijini căutarea textului complet
- Data / Ora Tipurile de date PSQL permit informații despre dată și oră în diferite formate
- Tipurile de câmp boolean Postgres pot conține trei valori 1. Adevărat 2. Fals 3. Nul
- Tipurile de date geometrice PostgreSQL reprezintă obiecte spațiale bidimensionale
- Tipurile de date enumerate din PostgreSQL sunt utile pentru a reprezenta informații care se schimbă rar, cum ar fi codul țării sau codul sucursalei
- Identificările unice universale (UUID) este o cantitate de 128 de biți care este generată de un algoritm
- PostgreSQL are multe intrări cu destinație specială care se numesc pseudo-tipuri
- Este recomandată utilizarea tipului de date „text”, cu excepția cazului în care doriți să limitați intrarea