Introduzione
PostgreSQL è un sistema di gestione di database relazionali open source noto per la sua robustezza ed estensibilità. Ciò significa anche che PostgreSQL offre una varietà di tipi di dati per gli utenti.
In questo tutorial tratteremo i diversi tipi di dati integrati disponibili in PostgreSQL.
Tipi di dati PostgreSQL
Quando crei una tabella in PostgreSQL, puoi specificare un tipo di dati per ogni colonna. PostgreSQL supporta un'ampia gamma di tipi di dati integrati:
Personaggio
PostgreSQL utilizza tipi di dati carattere per memorizzare valori di testo. Ci sono tre tipi di dati di carattere in PostgreSQL:
Nome | Descrizione |
carattere(n), carattere(n) | Stringhe a lunghezza fissa, dove n è il numero di caratteri. Spazio vuoto riempito a destra per essere uguale a n . |
carattere variabile(n), varchar(n) | Stringa di lunghezza variabile con un limite di caratteri, dove n è il numero di caratteri. |
testo | Stringa illimitata di lunghezza variabile. |
Tipi numerici
Tipi di dati numerici includere:
- Interi a due, quattro e otto byte
- Numeri in virgola mobile a quattro e otto byte
- Decimali selezionabili:
Nome | Dimensioni di archiviazione | Descrizione | Intervallo |
piccolo lavoro | 2 byte | Intero di piccolo intervallo. | -32768 a +32767 |
numero intero | 4 byte | Intero medio. | -2147483648 a +2147483647 |
grande | 8 byte | Intero a grande intervallo. | -9223372036854775808 a 9223372036854775807 |
decimale | variabile | Decimale di precisione specificato dall'utente. | Fino a 131072 cifre prima del punto decimale. Fino a 16383 cifre dopo il punto decimale |
numerico | variabile | Decimale di precisione specificato dall'utente. | fino a 131072 cifre prima del punto decimale. Fino a 16383 cifre dopo il punto decimale |
reale | 4 byte | Decimale di precisione variabile. | Precisione a 6 cifre decimali |
doppia precisione | 8 byte | Decimale di precisione variabile. | Precisione a 15 cifre decimali |
piccolo serial | 2 byte | Numero intero piccolo con incremento automatico. | da 1 a 32767 |
seriale | 4 byte | Intero medio autoincrementante. | 1 a 2147483647 |
grande serie | 8 byte | Numero intero grande con incremento automatico. | 1 a 9223372036854775807 |
Denaro
Il tipo di dati monetari memorizza una quantità numerica di denaro con precisione frazionaria fissa. Questo tipo memorizza fino a 8 byte di dati con un intervallo da -92233720368547758.08 a +92233720368547758.07 e utilizza numerico , numero intero e bigint tipi di dati come valori.
Data/Ora
PostgreSQL Supporta tutti i tipi di dati di data e ora SQL standard , con una risoluzione di 1 microsecondo o 14 cifre. La data è l'unica eccezione, con risoluzione di un giorno, conteggiata secondo il calendario gregoriano:
Nome | Dimensioni di archiviazione | Descrizione | Intervallo |
indicatore orario | 8 byte | Data e ora, senza fuso orario. | 4713 aC al 294276 dC |
timestampz | 8 byte | Data e ora, con fuso orario. | 4713 aC al 294276 dC |
data | 4 byte | Data. | 4713 aC al 294276 dC |
ora senza fuso orario | 8 byte | Ora del giorno, senza fuso orario. | 00:00:00 alle 24:00:00 |
ora con fuso orario | 12 byte | Ora del giorno, con fuso orario. | 00:00:00 + 1459 alle 24:00:00-1459 |
intervallo | 12 byte | Intervallo di tempo. | -178000000 a 178000000 anni |
Binario
PostgreSQL può salvare stringhe binarie di lunghezza variabile come tipo di dati bytea , prendendo 1 o 4 byte più la dimensione della stringa binaria effettiva.
Booleano
Un tipo di dati booleano è dichiarato utilizzando bool
o boolean
parole chiave. Può valere vero (1) , falso (0) o sconosciuto (null) valori.
Enumerato
Tipi di dati enumerati sono costituiti da un insieme di valori statici e ordinati, ad esempio numeri da 1 a 10 o mesi nell'anno. A differenza di altri tipi di dati, puoi creare tipi enumerati utilizzando il create type
comando:
CREATE TYPE year AS ENUM ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
Stringa di bit
Tipo stringa di bit memorizza stringhe di 1 e 0, utilizzate per memorizzare o visualizzare maschere di bit:
Nome | Descrizione |
bit(n) | Memorizza una stringa di bit con una lunghezza fissa di n caratteri. |
variabile(n) | Memorizza una stringa di bit di lunghezza variabile, fino a n caratteri. |
UUID
Un UUID (Identificatori univoci universali) è un insieme di 32 cifre creato da un algoritmo. È costituito da diversi gruppi di quattro, otto e dodici cifre, separati da trattini:
Indirizzo di rete
PostgreSQL utilizza tipi di dati di indirizzi di rete per memorizzare indirizzi IPv4, IPv6 e MAC:
Nome | Dimensioni di archiviazione | Descrizione |
cidro | 7 o 19 byte | Memorizza le reti IPv4 e IPv6. |
inet | 7 o 19 byte | Memorizza host e reti IPv4 e IPv6. |
macaddr | 6 byte | Memorizza gli indirizzi MAC. |
L'utilizzo dei tipi di dati dell'indirizzo di rete presenta diversi vantaggi rispetto all'utilizzo del testo normale. Ciò include il risparmio di spazio di archiviazione, funzioni e comandi specializzati e un controllo degli errori più semplice.
Ricerca di testo
Tipo di dati di ricerca di testo ti consente di cercare la corrispondenza migliore in una raccolta di documenti in linguaggio naturale:
Nome | Descrizione |
tsvector | Rappresenta un documento ottimizzato per la ricerca testuale, con un elenco di parole distinte normalizzate per unire diverse varianti della stessa parola (lessemi). |
tsquery | Memorizza le parole chiave che devono essere ricercate e le combina utilizzando gli operatori booleani (AND, OR e NOT). |
Geometrico
Tipi di dati geometrici rappresentano oggetti spaziali resi in due dimensioni, come punti, linee e poligoni:
Nome | Dimensioni di archiviazione | Rappresentanza | Descrizione numerica |
punto | 16 byte | Punta su un piano. | (x,y) |
linea | 32 byte | Linea infinita. | ((x1,y1),(x2,y2)) |
lseg | 32 byte | Segmento di linea finito. | ((x1,y1),(x2,y2)) |
scatola | 32 byte | Scatola rettangolare. | ((x1,y1),(x2,y2)) |
percorso | 16+16n byte | Percorso aperto o chiuso. | ((x1,y1),...(xn,yn)) |
poligono | 40+16n byte | Poligono. | ((x1,y1),...(xn,yn)) |
cerchio | 24 byte | Cerchio. | ((x,y),r) (punto centrale e raggio) |
XML
PostgreSQL ti consente di salvare i dati XML come tipo di dati XML utilizzando il XMLPARSE
funzione:
XMLPARSE (DOCUMENT [document name] WELLFORMED)
oppure:
XMLPARSE (CONTENT [XML content] WELLFORMED)
Dove:
[document name]
:un documento XML con radice singola.[XML content]
:valore XML validoWELLFORMED
:questa opzione garantisce che [nome documento] o [contenuto XML] si risolvano in un documento XML ben formato. Usalo solo quando non vuoi che il database controlli se l'input è ben formato.
JSON
PostgreSQL offre due tipi di dati JSON :
- json: Un'estensione del tipo di dati di testo con convalida JSON. Questo tipo di dati salva i dati esattamente come sono (inclusi gli spazi bianchi). Puoi inserirlo rapidamente nel database, ma è relativamente lento da recuperare a causa della rielaborazione.
- jsonb: Rappresenta i dati JSON in un formato binario. Più lento da inserire nel database, ma il supporto per l'indicizzazione e la mancanza di rielaborazione rendono il recupero significativamente più veloce.
Matrice
Il tipo di dati dell'array consente di definire una colonna di una tabella come matrice multidimensionale che può utilizzare qualsiasi tipo di dati di base, enumerato o composito. Puoi dichiarare, modificare e cercare array come faresti con qualsiasi altra colonna nel database.
Composito
Tipi di dati compositi consentono di utilizzare una riga o un record di una tabella come elemento di dati. Analogamente ai tipi di dati array, puoi anche dichiarare, cercare e modificare valori composti.
Raggio
Tipi di dati sull'intervallo utilizzare intervalli discreti o continui di altri tipi di dati. I tipi di dati dell'intervallo integrati includono:
Nome | Descrizione |
int4range | Intervallo di numeri interi di medie dimensioni. |
int8range | Intervallo di numeri interi grandi. |
intervallo numerico | Intervallo di decimali di precisione specificati dall'utente. |
strano | Intervallo di orari e date senza fuso orario. |
tstzrange | Intervallo di orari e date con fuso orario. |
intervallo di date | Intervallo di date. |
Puoi anche creare tipi di intervallo personalizzati utilizzando altri tipi di dati come base.
Identificatore oggetto
PostgreSQL utilizza identificatori di oggetti come sistemi di chiavi primarie durante l'esecuzione di operazioni di input e output specializzate:
Nome | Riferimenti | Descrizione |
oide | qualsiasi | Identificatore di oggetto numerico. |
regproc | pg_proc | Nome funzione. |
procedura di registrazione | pg_proc | Funzione con i tipi di argomento. |
regolatore | operatore_pg | Nome operatore. |
regoperator | operatore_pg | Operatore con tipi di argomento. |
regclass | pg_class | Nome relazione. |
regtype | pg_type | Nome del tipo di dati. |
regconfig | pg_ts_config | Configurazione ricerca testo. |
regdizionario | pg_ts_dict | Dizionario di ricerca di testo. |
Pseudotipi
I tipi pseudo sono una raccolta di voci speciali per dichiarare l'argomento di una funzione o il tipo di risultato:
Nome | Descrizione |
qualsiasi | La funzione accetta qualsiasi tipo di dati di input. |
qualsiasi elemento | La funzione accetta qualsiasi tipo di dati. |
qualsiasi array | La funzione accetta qualsiasi tipo di dati array. |
anynonarray | La funzione accetta qualsiasi tipo di dati non array. |
qualsiasi | La funzione accetta qualsiasi tipo di dati enumerato. |
qualsiasi intervallo | La funzione accetta qualsiasi tipo di dati di intervallo. |
cstring | La funzione accetta o restituisce una stringa C con terminazione null. |
interno | La funzione accetta o restituisce il tipo di dati interno al server. |
gestore_lingua | La funzione restituisce il gestore della lingua. |
fdw_handler | Un gestore wrapper di dati esterni restituisce fdw_handler. |
record | Trova una funzione che restituisce un tipo di riga non specificato. |
attivatore | Una funzione trigger restituisce trigger. |
vuoto | La funzione non restituisce alcun valore. |