PostgreSQL Tipi di dati: byte, numerici, caratteri, binari

PostgreSQL offre un ricco set di tipi di dati nativi per gli utenti. Gli utenti possono aggiungere nuovi tipi con l'aiuto del comando CREATE TYPE. Rende inoltre le query piรน semplici e leggibili.

Tipi di dati in PostgreSQL

PostgreSQL supporta i seguenti tipi di dati:

  • Tipi di testo
  • Tipi numerici
  • Date e orari
  • XML
  • JSON
  • Booleano
  • Bits
  • Dati binari
  • Reti
  • Array
  • Crea il tuo tipo di dati
  • Booleano
  • Temporale
  • UUID
  • Italia
  • JSON
  • Tipi di dati speciali per la memorizzazione di un indirizzo di rete e dati geometrici.

Studiamo PostgreSQL tipi di dati in dettaglio

Tipi di dati dei caratteri

PostgreSQL supporta tipi di dati carattere per la memorizzazione di valori di testo. PostgreSQL costruisce tipi di dati carattere dalle stesse strutture interne. PostgreSQL offre tre tipi di dati carattere: CHAR(n), VARCHAR(n) e TEXT.

Nome Descrizione
varchar(n) Ti consente di dichiarare una lunghezza variabile con un limite
Carattere(n) Lunghezza fissa, imbottito
Testo รˆ possibile utilizzare questo tipo di dati per dichiarare una variabile con lunghezza illimitata

Tipi di dati numerici

PostgreSQL supporta due tipi distinti di numeri:

  • Interi
  • Numeri in virgola mobile
Nome Dimensione del negozio Portata
piccolo 2 byte -32768 a + 32767
numero intero 4 byte -2147483648 a + 2147483647
grande 8 byte -9223372036854775808 a 9223372036854775807
decimale variabile Se lo hai dichiarato come tipo di dati decimale varia da 131072 cifre prima del punto decimale a 16383 cifre dopo il punto decimale
numerico variabile Se lo dichiari come numero, puoi includere numeri fino a 131072 cifre prima del punto decimale fino a 16383 cifre dopo il punto decimale
di rose 4 byte Precisione 6 cifre decimali
doppio 8 byte Precisione 15 cifre decimali

Tipi di dati binari

Una stringa binaria รจ una sequenza di ottetti o byte. I tipi di dati binari Postgres sono divisi in due modi.

  • Le stringhe binarie consentono di memorizzare quote di valore zero
  • Ottetti non stampabili

Le stringhe di caratteri non consentono zero ottetti e non consentono inoltre qualsiasi altro valore e sequenza di ottetti non validi secondo le regole di codifica del set di caratteri del database.

Nome Dimensioni di archiviazione Descrizione
Byte Da 1 a 4 byte piรน la dimensione della stringa binaria Stringa binaria di lunghezza variabile

Tipo di indirizzo di rete

Molte applicazioni memorizzano informazioni di rete come indirizzi IP di utenti o sensori. PostgreSQL ha tre tipi nativi che ti aiutano a ottimizzare i dati di rete.

Nome Taglia Descrizione
sidro 7 o 19 byte IPV4 e IPv6 reti
Inet 7 o 19 byte Host e reti IPV4 e IPV5
macaddr 6 byte Indirizzi MAC

L'utilizzo dei tipi di indirizzi di rete presenta i seguenti vantaggi

  1. Risparmio di spazio di archiviazione
  2. Controllo degli errori di input
  3. Funzioni come la ricerca di dati per subnet

Tipo di ricerca testo

PostgreSQL fornisce due tipi di dati progettati per supportare la ricerca full-text. La ricerca full-text consiste nel cercare in una raccolta di documenti in linguaggio naturale quelli che corrispondono meglio a una query.

  • Ricerca testuale Tsvettoriale PostgreSQL i tipi di variabile rappresentano un documento in una forma ottimizzata per la ricerca testuale
  • La ricerca testuale del tipo di query memorizza le parole chiave che devono essere cercate

Tipi di dati data/ora

PostgreSQL il timestamp offre una precisione al microsecondo anzichรฉ al secondo. Inoltre, hai anche la possibilitร  di memorizzare con o senza fuso orario. PostgreSQL convertirร  il timestamp con fuso orario in UTC in input e lo memorizzerร .

L'inserimento di data e ora รจ accettato in vari formati, inclusi Postgres tradizionale, ISO 8601. Compatibile con SQL ecc.

PostgreSQL supporta l'ordinamento per giorno/mese/anno. I formati supportati sono DMY, MDY, YMD

Tipi di dati temporali

Nome Taglia Portata Risoluzione
Timestamp senza fuso orario 8 byte Dal 4713 a.C. al 294276 d.C 1microsecondo/14 cifre
Timestamp con fuso orario 8 byte Dal 4713 a.C. al 294276 d.C 1microsecondo/14 cifre
quando 4 byte Dal 4713 a.C. al 294276 d.C Un giorno
Tempo senza fuso orario 8 byte 00:00:00 to 24:00:00 1microsecondo/14 cifre
Ora con fuso orario 12 byte 00:00:00 + 1459 fino a 24:00:00-1459 1microsecondo/14 cifre
Intervallo 12 byte Da -178000000 a 178000000 anni 1microsecondo/14 cifre

Esempi

Ingresso Descrizione
2025-09-07 ISO 8601, 7 settembre con qualsiasi stile di data (formato consigliato)
7 settembre 2025 7 settembre con qualsiasi stile di data
9/7/2025 7 settembre con MDY, 9 luglio con DMY
9/7/25 7 settembre 2025, con MDY
2025-set-7 7 settembre con qualsiasi stile di data
Settembre-7-2018 7 settembre con qualsiasi stile di data
7-set-25 7 settembre 2025, con YMD
20250907 ISO 8601,7 settembre 20225 in qualsiasi modalitร 
2025.250 anno e giorno dell'anno, in questo caso, 7 settembre 2025
J25250 Appuntamento giuliano

Ora/Ora con ingresso fuso orario

Ingresso Descrizione
11:19:38.507
11:19:38
11:19
111938
ISO 8601
11: 19 AM Uguale alle 11:19
11: 19 PM come alle 23:19
23: 19-3
23:19-03:00
231900-03
ISO 8601, uguale alle 11:19 EST
23: 19 EST fuso orario specificato come EST, uguale a 11:19 EST

Tipo booleano

Puรฒ contenere un tipo di dati booleano

  • I veri
  • Falso
  • nullo

valori.

Usi un file bool or booleano parola chiave per dichiarare una colonna con il tipo di dati booleano.

Quando inserisci valori in una colonna booleana, Postgre converte valori come

  • Si
  • y
  • 1
  • t
  • vero

in 1.

Mentre i valori piacciono

  • Non
  • N
  • 0
  • F
  • Falso

vengono convertiti in 0

Durante la selezione dei dati, i valori vengono nuovamente riconvertiti in sรฌ, vero, y, ecc.

Tipi di dati geometrici

I tipi di dati geometrici rappresentano oggetti spaziali bidimensionali. Aiutano a eseguire operazioni come rotazioni, ridimensionamento, traslazione, ecc.

Nome Dimensione di archiviazione sul Mercato Descrizione
punto 16 byte Punto su un aereo (X, y)
Line 32 byte Linea infinita ((xl.il ).(x2.y2))
Lseg 32 byte Segmento di linea finito ((xl.il ).(x2.y2))
Box 32 byte Flacone Box ((xl.il ).(x2.y2))
sentiero 16n + 16n byte Chiudi e apri il percorso ((xl.yl),โ€ฆ)
Poligono 40 + 16n byte Poligono [(xl.yl)โ€ฆ.]
Cerchio 24 byte Cerchio <(xy).r> (punto centrale e raggio)

Tipi enumerati

Enumerato PostgreSQL il tipo di dati รจ utile per rappresentare informazioni che cambiano raramente come il codice paese o l'ID della filiale. Il tipo di dati enumerato รจ rappresentato in una tabella con chiavi esterne per garantire l'integritร  dei dati.

Esempio

Il colore dei capelli รจ abbastanza statico in un database demografico

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

Tipi enumerati

Tipo di intervallo

Molte applicazioni aziendali richiedono dati racchiusi in intervalli. In genere, vengono definite due colonne (esempio: data di inizio, data di fine) per gestire gli intervalli. Questo รจ inefficiente e difficile da mantenere.

Postgre ha creato i tipi di intervallo come segue

  • int4range โ€” Visualizza l'intervallo di numeri interi
  • int8range โ€” Visualizza l'intervallo di bigint
  • numrange: mostra l'intervallo numerico
  • tstrange: ti aiuta a visualizzare il timestamp senza fuso orario
  • strano: consente di visualizzare il timestamp con il fuso orario
  • intervallo di date: intervallo di date

Tipo UUID

L'identificativo univoco universale (UUID) รจ una quantitร  di 128 bit generata da un algoritmo. รˆ molto improbabile che lo stesso identificatore venga generato da unโ€™altra persona nel mondo utilizzando lo stesso algoritmo. Ecco perchรฉ per i sistemi distribuiti questi identificatori rappresentano la scelta ideale in quanto offrono unicitร  all'interno di un singolo database. Un UUID รจ scritto come un gruppo di cifre esadecimali minuscole, con vari gruppi separati da trattini.

PostgreSQL ha un tipo di dati UUID nativo che consuma 16 byte di spazio di archiviazione. UUID รจ un tipo di dati ideale per le chiavi primarie.

Esempio

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre accetta anche forme alternative di input UUID come tutto maiuscolo, senza trattini, parentesi graffe, ecc.

tipo XML

PostgreSQL ti consente di archiviare dati XML in un tipo di dati, ma non รจ altro che un'estensione a un tipo di dati di testo. Ma il vantaggio รจ che controlla che l'XML di input sia ben formato.

Esempio

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

Tipo JSON

Per archiviare dati JSON PostgreSQL offre 2 tipi di dati

  1. JSON
  2. JSONB
json Jsonb
Una semplice estensione di un tipo di dati di testo con convalida JSON Una rappresentazione binaria dei dati JSON
L'inserimento รจ veloce ma il recupero dei dati รจ relativamente lento. L'inserimento รจ lento ma la selezione (il recupero dei dati รจ veloce)
Salva i dati immessi esattamente come sono, inclusi gli spazi bianchi. Supporta l'indicizzazione. Puรฒ ottimizzare lo spazio bianco per rendere il recupero piรน veloce.
Rielaborazione sul recupero dei dati Nessuna rielaborazione richiesta durante il recupero dei dati

Il tipo di dati JSON piรน utilizzato utilizzava jsonb a meno che non vi fosse alcuna necessitร  specifica di utilizzare il tipo di dati JSON.

Esempio

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}'); 

Pseudotipi

PostgreSQL ha molte voci con scopi speciali chiamate pseudotipi. Non รจ possibile utilizzare pseudo-tipi come PostgreSQL tipi di colonne. Sono usati per dichiarare l'argomento della funzione o il tipo restituito.

Ciascuno degli pseudotipi disponibili รจ utile nelle situazioni in cui il comportamento di una funzione non corrisponde semplicemente a prendere o restituire un valore di uno specifico Tipo di dati SQL.

Nome Descrizione
Qualsiasi La funzione accetta tutti i tipi di dati di input.
Un array La funzione accetta qualsiasi tipo di dati di array.
Qualsiasi elemento La funzione accetta qualsiasi tipo di dati.
Qualsiasi enum La funzione accetta qualsiasi tipo di dati enum.
Nonarray La funzione accetta qualsiasi tipo di dati non array.
Cstring La funzione accetta o restituisce una stringa C con terminazione null.
Interno La funzione interna accetta o restituisce il tipo di dati interno al server.
Gestore_linguaggio Viene dichiarato per restituire il gestore del linguaggio.
Record Trova una funzione che restituisce un tipo di riga non specificato.
grilletto Una funzione trigger viene utilizzata per restituire il trigger.

รˆ importante che l'utente che utilizza questa funzione si assicuri che la funzione si comporti in modo sicuro quando viene utilizzato uno pseudo-tipo come tipo di argomento.

migliori pratiche utilizzando i tipi di dati

  • Utilizza il tipo di dati "testo" a meno che tu non voglia limitare l'input
  • Non usare mai "char".
  • I numeri interi usano "int". Usa bigint solo quando hai numeri veramente grandi
  • Usa "numerico" quasi sempre
  • Usa il galleggiamento PostgreSQL se si dispone di un'origine dati IEEE 754

Sintesi

  • PostgreSQL offre un ricco set di tipi di dati nativi per gli utenti
  • PostgreSQL supporta tipi di dati carattere per la memorizzazione di valori di testo
  • PostgreSQL supporta due tipi distinti di numeri: 1. Interi, 2. Numeri in virgola mobile
  • Una stringa binaria รจ una sequenza di byte o ottetti
  • PostgreSQL ha il tipo di indirizzo di rete per aiutarti a ottimizzare l'archiviazione dei dati di rete
  • Ricerca di testo PostgreSQL le strutture dati sono progettate per supportare la ricerca full-text
  • Data/Ora I tipi di dati PSQL consentono informazioni su data e ora in vari formati
  • I tipi di campo booleani Postgres possono contenere tre valori 1. True 2. False 3. Null
  • Geometrico PostgreSQL i tipi di dati rappresentano oggetti spaziali bidimensionali
  • Tipi di dati enumerati in PostgreSQL รจ utile per rappresentare informazioni che cambiano raramente come il codice paese o l'ID della filiale
  • L'identificativo univoco universale (UUID) รจ una quantitร  di 128 bit generata da un algoritmo
  • PostgreSQL ha molte voci con scopi speciali chiamate pseudotipi
  • รˆ consigliabile utilizzare il tipo di dati "testo" a meno che non si desideri limitare l'input

Riassumi questo post con: