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