SQLite Tipi di dati con esempio: Int, Text, Numeric, Real, Blob

Tipi di dati in SQLite sono diversi rispetto ad altri sistemi di gestione di database. In SQLite, puoi dichiarare i tipi di dati normalmente, ma puoi comunque memorizzare qualsiasi valore in qualsiasi tipo di dati.

SQLite viene digitato di meno. Non esistono tipi di dati, puoi memorizzare qualsiasi tipo di dati che desideri in qualsiasi colonna. Questo è chiamato tipi dinamici.

Nei tipi statici, come in altri sistemi di gestione di database, se hai dichiarato una colonna con un tipo di dati intero, puoi inserire solo valori di tipo intero. Tuttavia, nei tipi dinamici come in SQLite, il tipo della colonna è determinato dal valore inserito. Poi SQLite memorizza quel valore a seconda del suo tipo.

SQLite Classi di archiviazione

In SQLite esistono diversi metodi di archiviazione a seconda del tipo di valore, questi diversi metodi di archiviazione sono chiamati classi di archiviazione in SQLite.

Di seguito sono riportate le classi di archiviazione disponibili in SQLite:

  • NULL – questa classe di archiviazione viene utilizzata per archiviare qualsiasi valore NULL.
  • INTEGER – qualsiasi valore numerico viene memorizzato come valore intero con segno (può contenere valori interi sia positivi che negativi). I valori INTERI in SQLite vengono archiviati in 1, 2, 3, 4, 6 o 8 byte di spazio di archiviazione a seconda del valore del numero.
  • VERO – questa classe di archiviazione viene utilizzata per archiviare i valori in virgola mobile e vengono archiviati in uno spazio di archiviazione di 8 byte.
  • TESTO – memorizza stringhe di testo. Supporta anche diverse codifiche come UTF-8, UTF-16 BE o UTF-26LE.
  • BLOB – utilizzato per archiviare file di grandi dimensioni, come immagini o file di testo. Il valore viene memorizzato come array di byte uguale al valore di input.

SQLite Tipo di affinità

L'affinità di tipo è il tipo consigliato di dati archiviati in una colonna. Tuttavia, puoi comunque archiviare qualsiasi tipo di dati come desideri, questi tipi sono consigliati e non obbligatori.

Questi tipi sono stati introdotti in SQLite per massimizzare la compatibilità tra SQLite e altro sistema di gestione del database.

Qualsiasi colonna dichiarata in an SQLite al database viene assegnata un'affinità di tipo in base al tipo di dati dichiarato. Ecco l'aumento delle affinità di tipo SQLite:

  • TESTO.
  • NUMERICO.
  • NUMERO INTERO.
  • VERO.
  • BLOB.

Ecco come SQLite determina l'affinità della colonna dal tipo di dati dichiarato:

  1. L'affinità INTEGER viene assegnata se il tipo dichiarato contiene il file stringa "INT".
  2. L'affinità TEXT viene assegnata se la colonna contiene nel suo tipo di dati una delle seguenti stringhe "TESTO","CHAR, o "CLOB“. Ad esempio, al tipo VARCHAR verrà assegnata l'affinità TEXT.
  3. L'affinità BLOB viene assegnata se per la colonna non è specificato alcun tipo o se il tipo di dati è un BLOB.
  4. L'affinità REALE viene assegnata se il tipo contiene una delle seguenti stringhe "DOPPIO","VERO, o "FLOAT".
  5. L'affinità NUMERIC viene assegnata per qualsiasi altro tipo di dati.

Nella stessa pagina è presente anche una tabella che mostra alcuni esempi per la mappatura tra SQLite tipi di dati e le loro affinità determinate da queste regole:

SQLite Tipo di affinità
Mappatura tra SQLite tipi di dati e affinità

Esempi di memorizzazione dei tipi di dati in SQLite

Memorizzare il numero con SQLite numero intero

Qualsiasi colonna di tipo dati contiene la parola "INT", le verrà assegnata un'affinità di tipo INTEGER. Verrà archiviato in una classe di archiviazione INTEGER.

A tutti i seguenti tipi di dati viene assegnata un'affinità di tipo INTEGER:

  • INT, INTERO, BIGINT.
  • INT2, INT4, INT8.
  • PICCOLOINT, PICCOLOINT, MEDIO INT.

Affinità di tipo INTEGER in SQLite può contenere qualsiasi numero intero assegnato (positivo o negativo) da 1 byte a un massimo di 8 byte.

Memorizzazione dei numeri con SQLite VERO

I numeri REALI sono numeri con precisione doppia in virgola mobile. SQLite memorizzato numeri reali come array di 8 byte. Ecco l'elenco dei tipi di dati in SQLite che puoi usare per memorizzare numeri REALI:

  • VERO.
  • RADDOPPIARE.
  • DOPPIA PRECISIONE.
  • GALLEGGIANTE.

Memorizzazione di dati di grandi dimensioni con SQLite BLOB

Esiste solo un modo per archiviare file di grandi dimensioni in un file SQLite database e utilizza il tipo di dati BLOB. Questo tipo di dati viene utilizzato per archiviare file di grandi dimensioni come immagini, file (di qualsiasi tipo), ecc. Il file viene convertito in un array di byte e quindi archiviato nella stessa dimensione del file di input.

Memorizzazione SQLite booleani

SQLite non ha una classe di archiviazione BOOLEAN separata. Tuttavia, i valori BOOLEAN vengono memorizzati come INTERI con valori 0 (come falso) o 1 (come vero).

Memorizzazione SQLite date e orari

È possibile dichiarare date o orari in SQLite utilizzando uno dei seguenti tipi di dati:

  • DATA
  • APPUNTAMENTO
  • TIMESTAMP
  • ORARIO

Tieni presente che non esiste una classe di archiviazione DATE o DATETIME separata in SQLite. Invece, tutti i valori dichiarati con uno dei tipi di dati precedenti vengono archiviati in una classe di archiviazione a seconda del formato data del valore inserito come segue:

  • TESTO – se hai inserito il valore della data nel formato della stringa ISO8601 (“AAAA-MM-GG HH:MM:SS.SSS”).
  • VERO – Se si inserisce il valore della data nei numeri dei giorni giuliani, il numero di giorni trascorsi da mezzogiorno a Greenwich del 24 novembre 4714 a.C., il valore della data verrebbe memorizzato come REALE.
  • INTEGER as Unix Ora, il numero di secondi trascorsi dal 1970-01-01 alle 00:00:00 UTC.

Sommario

SQLite supporta un'ampia gamma di tipi di dati. Ma, allo stesso tempo, è molto flessibile per quanto riguarda i tipi di dati. Puoi inserire qualsiasi tipo di valore in qualsiasi tipo di dati. SQLite ha inoltre introdotto alcuni nuovi concetti nei tipi di dati, come l'affinità di tipo e le classi di archiviazione, a differenza di altri sistemi di gestione di database.