Quando si crea una tabella in un database, l'istruzione SQL per la creazione della tabella definisce l'affinità, o tipo di dati, di ciascuna colonna di tale tabella. Sebbene sia possibile omettere le dichiarazioni di affinità, è consigliabile dichiarare in modo esplicito l'affinità delle colonne nelle istruzioni SQL
CREATE TABLE
.
Come regola generale, qualsiasi oggetto memorizzato in un database tramite l'istruzione
INSERT
viene restituito sotto forma di istanza dello stesso tipo di dati quando si esegue l'istruzione
SELECT
. Tuttavia, il tipo di dati del valore recuperato può essere diverso a seconda dell'affinità della colonna del database in cui il valore è memorizzato. Quando viene memorizzato in una colonna un valore con un tipo di dati che non corrisponde all'affinità della colonna, il database tenta di convertire il valore in modo da adattarlo all'affinità della colonna. Ad esempio, se una colonna del database viene dichiarata con l'affinità
NUMERIC
, il database tenterà di convertire in una classe d'archivio numerica (
INTEGER
o
REAL
) i dati inseriti prima di salvarli. Se non risulta possibile convertire i dati, il database crea un errore. Secondo questa regola, se viene inserita in una colonna
NUMERIC
la stringa “12345”, il database la converte automaticamente nel valore intero 12345 prima di memorizzarla. Quando viene recuperato tramite l'istruzione
SELECT
, il valore viene restituito sotto forma di istanza del tipo di dati numerico (ad esempio Number) invece che di istanza Stringa.
Il modo migliore per evitare la conversione indesiderata del tipo di dati è attenersi a due regole. Prima di tutto, definite ciascuna colonna con l'affinità che corrisponde al tipo di dati che desiderate che essa contenga. Successivamente, inserite solo valori il cui tipo di dati corrisponde all'affinità definita. Il rispetto di queste due regole offre due vantaggi. Tanto per cominciare, quando si inseriscono i dati, essi non vengono convertiti in modo inaspettato (il che poteva provocare la perdita del significato che si intendeva conferire loro). Inoltre, quando si recuperano i dati, essi vengono restituiti con il loro tipo di dati originale.
Per ulteriori informazioni sui tipi di affinità fra colonne disponibili e l'uso di tipi di dati nelle istruzioni SQL, vedete
Supporto per i tipi di dati
.