- Character Data Type;
- Numeric Data Type;
- LONG Data Type;
- Datatetime e Interval Data Type;
- RAW e LONG RAW Data Type;
- Large Object (LOB) Data Type;
- Extended Data Type
Character Data Type
I data type character memorizzano i dati carattere (alfanumerici), ossia parole e testo in formato libero, nel set di caratteri del database o nel set di caratteri nazionale. Sono meno restrittivi di altri tipi di dati e di conseguenza hanno meno proprietà.
Nome | Descrizione | Dimensione |
---|---|---|
CHAR [(size [BYTE | CHAR])] | Il type CHAR specifica una stringa di caratteri di lunghezza fissa nel set di caratteri del database. Oracle garantisce che tutti i valori archiviati in una colonna CHAR abbiano la lunghezza specificata dalla dimensione nella semantica della lunghezza selezionata. Se inserisci un valore più corto della lunghezza della colonna, Oracle inserisce in bianco il valore in base alla lunghezza della colonna. Se si tenta di inserire un valore troppo lungo per la colonna, Oracle restituisce un errore. | Max 2000 bytes Default size 1 |
VARCHAR2, VARCHAR | Stringhe di caratteri a lunghezza variabile e specificata durante la creazione. Se si dovesse superare il limite dichiarato, Oracle ritornerebbe un errore. Usare questo data type al posto di CHAR salva spazio sull’intera tabella. La dimensione occupata non dipende dalla massima lunghezza ma dalla lunghezza effettiva della stringa memorizzata. Oracle non usa la blank-padded comparison semantics quando confronta variabili di questo data type. NB. Si consiglia di utilizzare VARCHAR2 in quanto VARCHAR esiste per retrocompatibilità e potrebbe essere soggetto a cambiamenti. | Max 4000 bytes |
NCHAR | Data type unicode che serve appunto per memorizzare caratteri Unicode. Lunghezza fissa. NB. Un singolo carattere Unicode pesa molto di più di un carattere non Unicode. | Può contenere fino a 2000 caratteri ma a runtime il peso complessivo non può superare i 2000 bytes. |
NVARCHAR2 | Il tipo di dati NVARCHAR2 specifica una stringa di caratteri di lunghezza variabile nel set di caratteri nazionale. Lunghezza variabile. NVARCHAR2 è un tipo di dati esclusivamente Unicode. Oracle confronta i valori NVARCHAR2 utilizzando la semantica di confronto non-padded. | La dimensione minima è 1. Il valore massimo è: - 16383 se MAX_STRING_SIZE = EXTENDED e il national character set è AL16UTF16 - 32767 se MAX_STRING_SIZE = EXTENDED e il national character set è UTF8 - 2000 se MAX_STRING_SIZE = STANDARD e il national character set è AL16UTF16 - 4000 se MAX_STRING_SIZE = STANDARD e il national character set è UTF8 |
*la blank-padded comparison semantics è un processo che si innesca al momento di un confronto tra valori che hanno differenti lunghezze. Oracle aggiunge spazi vuoti alla fine di quella più corta in modo tale da appianare la differenza di lunghezza. Poi avviene un confronto carattere per carattere e alla prima differenza il processo si ferma dichiarando che le due stringhe non sono uguali.
LONG Data Type
Non creare tabelle con colonne LONG. Utilizzare invece colonne LOB (CLOB, NCLOB, BLOB). Le colonne LONG sono supportate solo per la compatibilità con le versioni precedenti.
Numeric Date Type
I tipi di dati numerici di Oracle Database memorizzano numeri fissi e mobili positivi e negativi, zero, infinito e valori che sono il risultato non definito di un'operazione, "non un numero" o NAN.
Nome | Descrizione | Dimensione |
---|---|---|
NUMBER | NUMBER memorizza 0 come pure numeri fissi positivi e negativi con valore assoluto tra 1.0 x 10-130 e 1.0 x 10126 escluso. Ogni NUMBER richiede da 1 a 22 bytes. Specificare un numero in virgola fissa utilizzando il seguente formato: NUMBER (p,s) dove - p è la precisione, o il numero massimo di cifre decimali significative, dove la cifra più significativa è la cifra diversa da zero più a sinistra e la cifra meno significativa è la cifra nota più a destra. Oracle garantisce la portabilità dei numeri con precisione fino a 20 cifre in base 100, che equivalgono a 39 o 40 cifre decimali a seconda della posizione del punto decimale. - s è la scala o il numero di cifre dalla virgola decimale alla cifra meno significativa. La scala può variare da -84 a 127. | Se si usa una scala negativa(-n) al momento della creazione, Oracle arrotonda il valore fino alla cifra sinistra (n). Esempio: 7,456,123.89 NUMBER(7,-2) 7456100 |
FLOAT | E’ un sottoinsieme del NUMBER. Può essere specificato con o senza la precisione p (cha ha lo stesso range di valori del NUMBER), la scala s non può essere specificata ma è interpretata a partire dal dato. | Esempio: CREATE TABLE test (col1 NUMBER(5,2), col2 FLOAT(5));
INSERT INTO test VALUES (1.23, 1.23); INSERT INTO test VALUES (7.89, 7.89); INSERT INTO test VALUES (12.79, 12.79); INSERT INTO test VALUES (123.45, 123.45);
SELECT * FROM test; COL1 COL2 ---------- ---------- 1.23 1.2 7.89 7.9 12.79 13 123.45 120 In questo esempio, il valore FLOAT restituito non può superare 5 cifre binarie. Il numero decimale più grande che può essere rappresentato da 5 cifre binarie è 31. L'ultima riga contiene valori decimali che superano 31. Pertanto, il valore FLOAT deve essere troncato in modo che le cifre significative non richiedano più di 5 cifre binarie. Pertanto 123,45 viene arrotondato a 120, che ha solo due cifre decimali significative, richiedendo solo 4 cifre binarie. |
BINARY_FLOAT, BINARY_DOUBLE | Simili al NUMBER data type. Al posto della precisione decimale, questi tipi, usano la precisione binaria. Questo permette di avere una dimensione ridotta e calcoli aritmetici più veloci. NB. Questi data types sono usati per memorizzare approssimazioni di valori e non la loro reale rappresentazione. | BINARY_FLOAT è a 32 bit. Ogni valore richiede 4 bytes. BINARY_DOUBLE è a 64 bit. Ogni valore richiede 8 bytes. |
Datatime e Interval Data Type
Nome | Descrizione | Dimensione |
---|---|---|
Date | Il datatype DATE memorizza le informazioni su data e ora. Per ogni valore DATE, Oracle memorizza le seguenti informazioni: anno, mese, giorno, ora, minuti e secondi. | |
TIMESTAMP | Estensione del tipo di dati DATE. Memorizza l'anno, il mese e il giorno del datetype DATE, oltre ai valori di ora, minuti e secondi. Questo tipo di dati è utile per memorizzare valori temporali precisi e per raccogliere e valutare le informazioni sulla data nelle aree geografiche. | |
TIMESTAMP WITH TIME ZONE | E’ una variante di TIMESTAMP che include il nome di un'area del fuso orario o un offset di fuso orario nel suo valore. L'offset del fuso orario è la differenza (in ore e minuti) tra l'ora locale e l'UTC (Coordinated Universal Time, precedentemente Greenwich Mean Time). Questo tipo di dati è utile per preservare le informazioni sul fuso orario locale. | |
TIMESTAMP WITH LOCAL TIME ZONE | E’ un'altra variante del TIMESTAMP sensibile alle informazioni sul fuso orario. Differisce da TIMESTAMP WITH TIME ZONE in quanto i dati archiviati nel database vengono normalizzati al fuso orario del database e le informazioni sul fuso orario non vengono archiviate come parte dei dati della colonna. Quando un utente recupera i dati, Oracle li restituisce nel fuso orario della sessione locale dell'utente. Questo tipo di dati è utile per le informazioni sulla data che devono essere sempre visualizzate nel fuso orario del sistema client in un'applicazione a due livelli. | |
INTERVAL YEAR TO MONTH | Memorizza un periodo di tempo utilizzando i campi ANNO e MESE datetime. Questo tipo di dati è utile per rappresentare la differenza tra due valori datetime quando solo i valori dell'anno e del mese sono significativi. | |
INTERVAL DAY TO SECOND | Memorizza un periodo di tempo in termini di giorni, ore, minuti e secondi. Questo tipo di dati è utile per rappresentare la differenza precisa tra due valori datetime. |
RAW & LONG RAW Date Type
LARGE OBJECT (LOB) Date Type
I tipi di dati LOB integrati BLOB, CLOB e NCLOB (memorizzati internamente) e BFILE (memorizzati esternamente) possono archiviare dati di grandi dimensioni e non strutturati come testo, immagine, video e dati spaziali. La dimensione dei dati BLOB, CLOB e NCLOB può arrivare fino a (232-1 byte) * (il valore del parametro CHUNK della memoria LOB). Se i tablespace nel database hanno una dimensione del blocco standard e se è stato utilizzato il valore predefinito del parametro CHUNK dell'archiviazione LOB durante la creazione di una colonna LOB, questo equivale a (232-1 byte) * (dimensione del blocco del database). I dati BFILE possono contenere fino a 264-1 byte, sebbene il sistema operativo possa imporre restrizioni su questo massimo. Quando si crea una tabella, è possibile specificare facoltativamente spazio tabella e caratteristiche di archiviazione per le colonne LOB o gli attributi degli oggetti LOB da quelli specificati per la tabella.
Nome | Descrìzione | Dimensione |
---|---|---|
BLOB | Dati binari non strutturati. Gli oggetti BLOB possono essere considerati flussi di bit senza semantica del set di caratteri. | Gli oggetti BLOB possono memorizzare dati binari fino a (4 gigabyte -1) * (il valore del parametro CHUNK della memoria LOB). |
CLOB | Memorizza dati di caratteri a byte singolo e multibyte. Sono supportati sia i set di caratteri a larghezza fissa che quelli a larghezza variabile ed entrambi utilizzano il set di caratteri del database. | Gli oggetti CLOB possono memorizzare fino a (4 gigabyte -1) * (il valore del parametro CHUNK della memoria LOB) di dati carattere. |
NCLOB | Il tipo di dati NCLOB memorizza i dati Unicode. Sono supportati sia i set di caratteri a larghezza fissa che quelli a larghezza variabile ed entrambi utilizzano il national characterset. | Gli oggetti NCLOB possono memorizzare fino a (4 gigabyte -1) * (il valore del parametro CHUNK della memoria LOB) di dati di testo carattere. |
BFILE | Il tipo di dati BFILE consente l'accesso ai LOB di file binari archiviati in file system al di fuori di Oracle Database. Una colonna o un attributo BFILE memorizza un localizzatore BFILE, che funge da puntatore a un file binario sul file system del server. Il localizzatore conserva il nome della directory e il nome del file. I BFILE non partecipano alle transazioni e non sono recoverabili ma è ill sistema operativo sottostante che garantisce l'integrità e il salvataggio dei file. | BFILE possono raggiungere la dimensione massima fino a 264-1 bytes, sebbene il sistema operativo possa imporre delle restrizioni a tale dimensione. |
EXTENDED Data Types
- se MAX_STRING_SIZE = STANDARD, si applicano i limiti di dimensione per le versioni precedenti a Oracle Database 12c: 4000 byte per i tipi di dati VARCHAR2 e NVARCHAR2 e 2000 byte per il tipo di dati RAW. Questa è l'impostazione predefinita.
- se MAX_STRING_SIZE = EXTENDED, il limite di dimensione è 32767 byte per i tipi di dati VARCHAR2, NVARCHAR2 e RAW.