back to top

I tipi di dati in PostgreSQL

Fondamentalmente PostgreSQL gestisce quattro tipologie di dato: le stringhe, i valori numerici, le date e i valori booleani o logici. La capacità di distinguere tra tipi diversi è particolarmente importante, dato che consente di ottimizzare l’allocazione dei dati risparmiando spazio e velocizzando le operazioni di elaborazione.

I tipi di dato numerici si riferiscono a due principali sottocategorie: i numeri interi e i numeri decimali, questi ultimi sono detti anche numeri in "virgola mobile". Nello specifico, riportiamo alcune tipologie di dato intero:

  • INTEGER: numero intero costituito al massimo da 9 cifre.
  • SMALLINT: numero intero per definizione più piccolo di quello esprimibile tramite il tipo INTEGER.
Per quanto riguarda invece i decimali elenchiamo:
  • FLOAT: espresso singolarmente indica un numero in virgola mobile; FLOAT(n): indica invece un numero in virgola mobile della lunghezza di n bit.
  • REAL: è anch’esso un numero in virgola mobile ma espresso in teoria con maggiore precisione rispetto a FLOAT.
  • DOUBLE PRECISION: è un numero in virgola mobile in pratica equivalente al tipo REAL.
I tipi di dato stringa si riferiscono a sequenze di caratteri, per stringa infatti si intende un insieme di caratteri coposto da numeri che vanno da 0 a 9, da lettere dell’alfabeto, da spazi vuoti, punteggiatura, simboli e caratteri speciali. Nello stesso modo un’immagine, un video o un Mp3 sono delle sequenze di caratteri che restituiscono un output multimediale.

Riportiamo alcuni esempi di dato stringa:

  • CHAR: indica un singolo carattere; CHAR(n) indica invece una stringa della lunghezza fissa di n caratteri.
  • VARCHAR(n): indica una stringa di lunghezza variabile composta al massimo da n caratteri.
Le date vengono viste da PostgreSQL come se fossero un tipo a se stante, non un numero nè una stringa; ciò consente di operare calcoli cronologici con un alto livello di precisione, quasi come se l’ORDBMS avesse "coscienza" del tempo che passa. Per quanto riguarda questa tipologia segnaliamo:
  • DATE: indica una data intera completa di giorno, mese ed anno.
  • TIMESTAMP: indica un’informazione contenente data e ora.
  • TIME: indica un orario completo di ore, minuti ed secondi.
  • INTERVAL: indica un intervallo di tempo.
I valori booleani rispondono alla logica binaria 0/1 oppure TRUE/FALSE, da cui abbiamo il valore BOOLEAN che può assumere soltanto uno tra questi due valori. 5. Rappresentazione dei dati in PostgreSQL

Dopo la lettura del capitolo precedente, coloro che hanno una certa pratica nell’amministrazione di basi di dati attraverso il noto DBMS open source MySQL, avranno sicuramente notato alcune affinità trà quest’ultimo e PostgreSQL.

I punti in comune sono certamente numerosi, ma lo sono anche le differenze, una tra queste è sicuramente la modalità di rappresentazione del tipo di dato, che in PostgreSQL è un pò più complessa. In ogni caso, la logica di fondo è abbastanza semplice, una volta compresa non sarà difficile sfruttarla a proprio vantaggio.

La regola fondamentale nella rappresentazione del tipo di dato in PostgreSQL è che essi vanno rappresentati in forma costante e gli unici delimitatori ammessi sono gli apici singoli.

I tipi di dato numerici vanno rappresentati in questo modo:

`numero'
Per cui avremo, per esempio, `1000′, nel caso di un INTEGER (oppure `-1000′ se negativo); nello stesso modo avremo, per esempio `- 58.9′ nel caso di un numero in virgola mobile, sia esso FLOAT o REAL.

Diversa la modalità di rappresentazione utilizzata per le stringhe:

`'stringa''
Per cui avremo `’albero” o `’}☻ôqÕ” identificati come stringhe; la modalità non cambia al variare del tipo stringa, quindi non avremo differenze tra CHAR e VARCHAR.

Anche le date hanno una propria sintassi rappresentativa:

`'data''
Per cui avremo `’22.11.2005” nel caso di una data (dato DATE), `’17:57:51” nel caso di un orario (dato TIME) oppure, `’22.11.2005 17:57:51” nel caso di un TIMESTAMP. Fa eccezione il dato INTERVAL:
`INTERVAL 'intevallo''
nella cui rappresentazione manca l’apice singolo iniziale, ad esempio: `INTERVAL ‘- 10 HOUR”.

Quando si lavora con dati di tipo booleano bisogna fare attenzione alla forma in cui viene espresso l’esito della logica binaria. Potremmo avere una forma numerica: `1′, `0′ o come stringa `’true”, `’false” (sono possibili anche `’t”, `’y”, `’yes” e `’f”, `’n”, `’no”).

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.