back to top

SQL: tipi di dato numerici, stringa e temporali

Nella precedente lezione abbiamo spiegato cosโ€™รจ un database e abbiamo detto che, per immagazzinare i dati, esso ricorre a tabelle a loro volta organizzate in colonne e righe. Allโ€™interno di ogni colonna i dati immagazzinati devono essere tra loro omogenei, cioรจ essere dello stesso tipo.

Dichiarare i tipi di dato

Quando si definisce la struttura di una tabella bisogna dichiarare, per ciascuna colonna, il tipo di dato che essa dovrร  ospitare: testo, numeri, date, ecc.

Pubblicitร 

La dichiarazione del tipo di dato deve essere fatta al momento della creazione della tabella ma puรฒ essere cambiata anche successivamente. La modifica del tipo di dato, tuttavia, รจ una operazione non sempre semplicissima quando la tabella ospita giร  dei dati al suo interno: per cambiare il tipo di dato, infatti, รจ necessario che i dati giร  presenti nella colonna siano compatibili con esso!

Eโ€™ bene, quindi, prestare la massima attenzione in fase di creazione delle tabelle nella definizione dei giusti tipi di dato.

I tipi di dato di SQL

Ogni DBMS ha i "suoi" tipi di dato, di seguito elencheremo le tipologie piรน diffuse che risultano essere presenti in tutti i principali database in commercio tralasciando, invece, i tipi di dati peculiari di specifici DBMS per i quali si rimanda a documentazioni dedicate.

Tipi di dati numerici

  • INT, BIGINT e SMALLINT: INT rappresenta i valori interi (senza cifre decimali), BIGINT e SMALLINT rappresentano, rispettivamente, numeri interi molto grandi o non troppo grandi (BIGINT e SMALLINT vengono usati in casi specifici)
  • NUMERIC e DECIMAL: sono utilizzati per rappresentare i numeri decimali
  • REAL, DOUBLE e FLOAT: sono utilizzati per i numeri approssimativi

Facciamo qualche esempio: se una colonna viene dichiarata come INT potrร  ospitare al suo interno solo valori numerici interi. Se viene dichiarata NUMERIC (o DECIMAL) sarร  possibile definirne precisione e scala:

NUMERIC(precisione, scala)

Queste rappresentano, rispettivamente, il numero di cifre totali che ospiterร  il campo e il numero di cifre dopo la virgola, piรน precisamente:

  • precisione รจ il numero totale di cifre (>= 0)
  • scala (> 0 e < precisione)

Tipi di dati stringa (testo)

  • CHAR: รจ utilizzato per ospitare stringhe di lunghezza fissa; il valore minimo รจ 1 il massimo cambia a seconda del DBMS utilizzato (in MySQL รจ 255)
  • VARCHAR: รจ utilizzato per ospitare stringhe di lunghezza variabile (viene specificata la lunghezza massima)

Facciamo un esempio: se una colonna viene dichiarata CHAR(5) essa potrร  ospitare stringhe di testo lunghe sempre 5 caratteri. Se viene inserito un valore testuale piรน corto il sistema aggiungerร  automaticamente degli spazi per raggiungere la lunghezza definita. Se si prova ad archiviare una stringa piรน lunga di 5 caratteri, viceversa, si riceverร  un errore.

Nel caso di VARCHAR, invece, lโ€™unica discriminante รจ la lunghezza massima.

Tipi di dato temporali

SQL definisce dei tipi temporali per permettere la gestione di date e ore. Eโ€™ importante precisare che il formato usato รจ quello anglosassone, cioรจ:

ANNO-MESE-GIORNO

e

ORA:MINUTI:SECONDI
  • DATE: rappresenta le date espresse come anno (4 cifre), mese (2 cifre comprese tra 1 e 12), giorno (2 cifre comprese tra 1 e 31 con ulteriori restrizioni a seconda del mese, ad es. febbraio puรฒ essere massimo 28 o 29 a seconda che lโ€™anno sia bisestile o meno); i valori sono separati dal trattino (-)
  • TIME: rappresenta gli orari espressi nel formato ora (2 cifre), minuti (2 cifre) e secondi (2 cifre) separati dal simobolo dei due punti (:)
  • DATETIME: rappresenta data e orario, questโ€™ultimo con la precisione al millisecondo.

Tipi boleani

SQL prevede un tipo BOOLEAN appositamente previsto per la gestione di valori booleani (VERO/FALSO). Accetta come valore: TRUE, FALSE, 0 e 1.

Non tutti i DBMS supportano campi di questo tipo. In MySQL, ad esempio, per i valori booleani si รจ soliti utilizzare un campo numerico โ€“ TINYINT(1) โ€“ che verrร  valorizzato come 0 (falso) o 1 (vero).

Il valore NULL

Valore NULL รจ una speciale costante presente in tutti i DBMS: esso rappresenta lโ€™assenza di informazione. Ogni campo non valorizzato, a prescindere dal tipo di dato, puรฒ essere NULL.

Pubblicitร