I 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.
In questo tutorial imparerai-
- Classi di archiviazione
- Tipo di affinità
- Esempi di archiviazione dei tipi di dati in SQLite
SQLite è digitato meno. Non ci sono tipi di dati, puoi memorizzare qualsiasi tipo di dati che ti piace in qualsiasi colonna. Questo è chiamato tipi dinamici.
Nei tipi statici, come in altri sistemi di gestione di database, se si dichiara una colonna con un tipo di dati intero, è possibile inserire solo valori di tipo di dati intero. Tuttavia, nei tipi dinamici come in SQLite, il tipo di colonna è determinato dal valore inserito. E poi SQLite memorizza quel valore a seconda del suo tipo.
Classi di archiviazione SQLite
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.
Le seguenti sono le classi di archiviazione disponibili in SQLite:
- NULL : questa classe di archiviazione viene utilizzata per memorizzare qualsiasi valore NULL.
- INTERO : qualsiasi valore numerico viene memorizzato come valore intero con segno (può contenere valori interi positivi e negativi). I valori INTEGER in SQLite vengono memorizzati in 1, 2, 3, 4, 6 o 8 byte di memoria a seconda del valore del numero.
- REAL : questa classe di archiviazione viene utilizzata per memorizzare i valori in virgola mobile e vengono archiviati in 8 byte di memoria.
- TESTO : memorizza le stringhe di testo. Supporta anche codifiche diverse come UTF-8, UTF-16 BE o UTF-26LE.
- BLOB : utilizzato per memorizzare file di grandi dimensioni, come immagini o file di testo. Il valore viene memorizzato come matrice di byte uguale al valore di input.
Tipo di affinità SQLite
L'affinità di tipo è il tipo di dati consigliato archiviato in una colonna. Tuttavia, puoi ancora memorizzare qualsiasi tipo di dati come desideri, questi tipi sono consigliati non necessari.
Questi tipi sono stati introdotti in SQLite per massimizzare la compatibilità tra SQLite e altri sistemi di gestione di database.
A qualsiasi colonna dichiarata in un database SQLite viene assegnata un'affinità di tipo a seconda del tipo di dati dichiarato. Ecco l'aumento delle affinità di tipo in SQLite:
- TESTO.
- NUMERICO.
- NUMERO INTERO.
- VERO.
- BLOB.
Ecco come SQLite determina l'affinità della colonna dal suo tipo di dati dichiarato:
- L'affinità INTEGER viene assegnata se il tipo dichiarato contiene la stringa " INT ".
- L'affinità TEXT è assegnata, se la colonna contiene nel suo tipo di dati una delle seguenti stringhe " TEXT ", " CHAR o" CLOB "Ad esempio, al tipo VARCHAR verrà assegnata l'affinità TEXT.
- L'affinità BLOB viene assegnata se la colonna non ha alcun tipo specificato o il tipo di dati è un BLOB.
- L'affinità REAL viene assegnata se il tipo contiene una delle seguenti stringhe " DOUB ", " REAL o" FLOAT ".
- L'affinità NUMERICA è assegnata per qualsiasi altro tipo di dati.
C'è anche una tabella nella stessa pagina che mostra alcuni esempi per la mappatura tra i tipi di dati SQLite e le loro affinità determinate da queste regole:
Esempi di archiviazione dei tipi di dati in SQLite:
Memorizzazione del numero con intero SQLite:
Qualsiasi colonna di tipo di dati contiene la parola "INT", verrà assegnata un'affinità di tipo INTEGER. Verrà archiviato in una classe di archiviazione INTEGER.
Tutti i seguenti tipi di dati vengono assegnati come affinità di tipo INTEGER:
- INT, INTEGER, BIGINT.
- INT2, INT4, INT8.
- TINYINT, SMALLINT, MEDIUM INT.
L'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 di numeri con SQLite REAL:
I numeri REALI sono il numero con doppia precisione in virgola mobile. SQLite memorizzava i numeri reali come array di 8 byte. Ecco l'elenco dei tipi di dati in SQLite che puoi utilizzare per memorizzare i numeri REALI:
- VERO.
- DOPPIO.
- DOPPIA PRECISIONE.
- GALLEGGIANTE.
Archiviazione di dati di grandi dimensioni con SQLite BLOB:
Esiste un solo modo per archiviare file di grandi dimensioni in un database SQLite e utilizza il tipo di dati BLOB. Questo tipo di dati viene utilizzato per memorizzare file di grandi dimensioni come immagini, file (di qualsiasi tipo), ecc. Il file viene convertito in un array di byte e quindi memorizzato nella stessa dimensione del file di input.
Memorizzazione di booleani SQLite:
SQLite non ha una classe di archiviazione BOOLEANA separata. Tuttavia, i valori BOOLEANI vengono memorizzati come INTERI con valori 0 (come falso) o 1 (come vero).
Memorizzazione di date e ore SQLite:
È possibile dichiarare la data o l'ora della data in SQLite utilizzando uno dei seguenti tipi di dati:
- DATA
- APPUNTAMENTO
- TIMESTAMP
- TEMPO
Notare 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 della 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").
- REALE : se si inserisce il valore della data nei numeri del giorno giuliano, il numero di giorni trascorsi da mezzogiorno a Greenwich del 24 novembre 4714 a.C. Quindi il valore della data verrà memorizzato come REALE.
- INTEGER come Unix Time, il numero di secondi dal 1970-01-01 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 anche 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.