Tipi di dati in Oracle

Le tabelle sono oggetti logici che consentono la memorizzazione di dati secondo un preciso schema deciso dall’utente che le ha progettate. Ogni tabella è formata da una o più colonne, una per ciascuna caratteristica dell’oggetto (entità) che si vuole rappresentare.

Prendiamo come esempio una tabella “Anagrafica del personale”. Sarà formata da diversi campi, tra cui nome, cognome, data di nascita, salario e altre informazioni. I campi sono rappresentati dalle colonne della tabella. Ogni colonna quindi contiene un dato particolare e se ne può specificare il tipo (“tipo di dato” o “datatype”).

Datatype

CHAR (n)

Rappresenta sequenze alfanumeriche (lettere e numeri), ed è a lunghezza fissa, specificata mediante il valore racchiuso fra le parentesi (n). Questo valore è compreso tra 1 e 2000 caratteri.

Lunghezza fissa significa che inserendo un numero di caratteri inferiore a “n”, i caratteri non utilizzati vengono sostituiti da altrettanti spazi. Supponiamo di definire una colonna del tipo:

Cognome CHAR (10);

e di inserirvi un’informazione di cinque lettere, ad esempio ‘Rossi’. Oracle inserirà la stringa ‘Rossi’ nella colonna specificata (Cognome) e aggiungerà altri cinque spazi alla fine della parola per raggiungere la lunghezza definita (10).

Se non specifichiamo alcun valore n allora Oracle, per default, considera la lunghezza massima di un solo carattere. Pertanto le dichiarazioni:

Cognome CHAR (1);
Cognome CHAR;

sono equivalenti. Se eccediamo la lunghezza specificata, Oracle solleva un errore.

VARCHAR2 (n)

A differenza del precedente, questo tipo alfanumerico è a lunghezza variabile e può memorizzare fino a 4000 caratteri.

Il vantaggio che introduce è essenzialmente uno, il risparmio di spazio. Infatti VARCHAR2 non inserisce gli spazi mancanti se la lunghezza del dato immesso è inferiore a quella specificata. Non esiste, inoltre, un valore di default per questo tipo di dati, pertanto Oracle solleverà un errore se non sarà specificato il valore di n.

Se definiamo il campo Cognome come

Cognome VARCHAR2 (30);

ed inseriamo la stringa ‘Parisi’, questa occuperà esattamente sei caratteri.

NUMBER (p, s)

Consente la memorizzazione di valori numerici interi, positivi e negativi, dei numeri a virgola fissa e di quelli a virgola mobile. I parametri p e s, anch’essi numerici, indicano rispettivamente la precisione e la scala. La precisione può avere un valore da 1 a 38, mentre la scala un valore da -84 a 127. Se omettiamo questi valori, Oracle considera il massimo valore per entrambi. Per conoscere i limiti di memorizzazione per questo datatype ricorriamo alle seguenti regole:

  1. la scala indica le cifre dopo la virgola, ovvero quelle decimali;
  2. il numero di cifre intere (prima della virgola) è dato dalla sottrazione di p-s.

Queste regole però non valgono sempre, ad esempio quando il valore della scala è negativo oppure maggiore del valore della precisione. In casi come questi è opportuno consultare la documentazione di Oracle.

Facciamo un esempio. Creando una tabella definiamo un campo come NUMBER (6, 2). I numeri memorizzabili in questo campo avranno al massimo due cifre decimali e quattro cifre intere (6-2). Pertanto l’intervallo di valori sarà da -9.999,99 a 9.999,99.

Altro esempio. Definiamo un campo come NUMBER (5, 3). I numeri avranno al massimo tre cifre decimali e due cifre intere (5-3). Pertanto l’intervallo andrà da -99,999 a99,999.

Un numero con cifre decimali superiori al valore della scala sarebbe automaticamente arrotondato secondo il valore della scala. Se invece si eccede il valore di precisione Oracle solleva un errore. Ad esempio, se definiamo il campo

Salario NUMBER (3, 1);

ed vi inseriamo 124,7 l’operazione non sarebbe eseguita e Oracle segnalerebbe l’errore (3-1 = 2 cifre intere al massimo).

DATE

È usato per memorizzare date e orari. Un campo di questo tipo può contenere le seguenti informazioni:

  • secolo
  • anno
  • mese
  • giorno
  • ora
  • minuti
  • secondi

Oracle fornisce svariate e utilissime funzioni per operare e trasformare questo tipo di dati. Il default di memorizzazione è GG-MES-AA ovvero due cifre per il giorno, tre lettere per il mese e due cifre per l’anno. La data 31-dic-75 ne è un esempio.

Se inseriamo una data senza specificare l’orario, questo viene aggiunto da Oracle con valore 00:00:00.

Quando lavoriamo con il tipo DATE possiamo fare riferimento alla funzione SYSDATE che riporta la data e l’ora attuale del sistema, quindi del server Oracle.

Infine è possibile specificare date che vanno dal 01 gennaio 4712 A.C. al 31 dicembre 9999 D.C.

Ora che conosciamo i datatype più utilizzati in Oracle, le strutture delle tabelle ci risulteranno più chiare.

Both comments and pings are currently closed.

Comments are closed.