PostgreSQL Tipi di dati: numerico, carattere, byte

⚡ Riepilogo intelligente

PostgreSQL I tipi di dati definiscono il tipo di valore che ogni colonna può memorizzare, includendo le categorie carattere, numerico, binario, data e ora, booleano, geometrico, di rete, UUID, XML e JSON. PostgreSQL Consente inoltre agli utenti di creare tipi personalizzati con il comando CREATE TYPE.

  • 🔤 Tipi di caratteri: I tipi di dati CHAR, VARCHAR e TEXT memorizzano valori di testo a lunghezza fissa, a lunghezza variabile e a lunghezza illimitata.
  • 🔢 Tipi numerici: I tipi di dati interi e a virgola mobile vanno da smallint a bigint, oltre a valori numerici e decimali esatti.
  • 🕒 Data e ora: I tipi di dati timestamp, data, ora e intervallo offrono una precisione al microsecondo con fusi orari opzionali.
  • ✅ Booleano ed enumerazione: I tipi booleani possono assumere i valori vero, falso o nullo, mentre i tipi enumerati modellano insiemi fissi che cambiano raramente.
  • 🌐 Tipologie specializzate: I formati Network, geometric, UUID, XML, JSON e JSONB gestiscono indirizzi, forme, identificatori e dati strutturati.
  • 💡 migliori Pratica: Preferisci il tipo TEXT per le stringhe e NUMERIC per i numeri, e crea tipi personalizzati solo quando necessario.

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
  • Temporale
  • UUID
  • 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 IPv6
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 2025 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

  • Nodo
  • 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.yl).(x2.y2))
Lseg 32 byte Segmento di linea finito ((xl.yl).(x2.y2))
Box 32 byte Flacone Box ((xl.yl).(x2.y2))
sentiero 16n + 16n byte Chiudi e apri il percorso ((xl.yl),…)
Polygon 40 + 16n byte Polygon [(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'Identificatore Univoco Universale (UUID) è una quantità a 128 bit generata da un algoritmo. È estremamente improbabile che lo stesso identificatore venga generato da un'altra persona al mondo utilizzando lo stesso algoritmo. Per questo motivo, per i sistemi distribuiti, questi identificatori rappresentano una scelta ideale, in quanto offrono unicità all'interno di un singolo database. Un UUID è scritto come un gruppo di cifre esadecimali minuscole, separate da trattini.

PostgreSQL UUID ha un tipo di dati nativo che occupa 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"], "onboarded": 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

DOMANDE FREQUENTI

I tipi numerici (decimali) memorizzano valori esatti e sono ideali per denaro e calcoli precisi. I tipi a virgola mobile (reale e double) memorizzano valori approssimativi con prestazioni più veloci ma piccoli errori di arrotondamento, quindi è meglio evitarli per dati finanziari esatti.

Sì. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. PostgreSQL Consente a qualsiasi colonna di memorizzare un array di un tipo base, come integer[] o text[]. Gli array sono utili per elenchi di valori e possono essere ricercati, indicizzati e scomposti in query.

Utilizza il tipo numerico per le valute perché memorizza valori decimali esatti. Evita i tipi a virgola mobile, che introducono errori di arrotondamento. Esiste anche un tipo specifico per le valute, ma è meno flessibile per i dati multivaluta.

L'intelligenza artificiale può analizzare i tuoi dati di esempio e consigliare i tipi di dati più adatti, come ad esempio numerico per le valute o JSONB per i campi flessibili. Spiega i compromessi in termini di spazio di archiviazione, precisione e prestazioni, in modo che tu possa prendere una decisione consapevole.

Sì. L'IA può mappare i tipi di dati da MySQL, Oracle, o SQL Server per loro PostgreSQL equivalenti e mancate corrispondenze di flag, come TINYINT o NVARCHAR, aiutanoping pianifichi una migrazione del database più agevole.

Riassumi questo post con: