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
- Risparmio di spazio di archiviazione
- Controllo degli errori di input
- 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')
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
- JSON
- 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
