SQLite Tipi di dati: Int, Testo, Numerico, Reale, Blob

โšก Riepilogo intelligente

SQLite I tipi di dati funzionano in modo diverso dagli altri database perchรฉ SQLite utilizza tipi dinamiciping, memorizzando qualsiasi valore in qualsiasi colonna. Le classi di archiviazione, l'affinitร  di tipo e i nomi dei tipi dichiarati determinano insieme come ogni valore viene fisicamente salvato su disco.

  • ๐Ÿงฉ Ty dinamicoping: SQLite Il tipo di dati รจ dinamico, quindi รจ il valore inserito, e non la definizione della colonna, a determinare come vengono memorizzati i dati.
  • ๏ธ Classi di archiviazione: Cinque classi di memorizzazione โ€” NULL, INTEGER, REAL, TEXT e BLOB โ€” descrivono come ciascun valore viene memorizzato sul disco.
  • ๐ŸŽฏ Affinitร  di tipo: A ogni colonna viene assegnata un'affinitร  consigliata โ€” TESTO, NUMERICO, INTERO, REALE o BLOB โ€” in base al nome del tipo dichiarato.
  • ๐Ÿ”ข Archiviazione dei numeri: Qualsiasi tipo dichiarato contenente INT diventa INTEGER, mentre REAL, DOUBLE e FLOAT contengono numeri in virgola mobile in otto byte.
  • ???? Date e valori booleani: SQLite Non dispone di una classe dedicata per DATE o BOOLEAN e memorizza questi valori come TEXT, REAL o INTEGER.
  • ๐Ÿค– Assistenza AI: Gli assistenti AI text-to-SQL e GitHub Copilot generano SQLite Definisci le colonne e scegli i tipi di dati in linguaggio naturale.

SQLite Tipi di dati

Le sezioni seguenti spiegano come SQLite Il testo tratta i tipi di dati, partendo dalle cinque classi di memorizzazione, passando poi all'affinitร  di tipo e alle relative regole di assegnazione, e infine presentando esempi pratici di memorizzazione di numeri interi, numeri reali, BLOB, valori booleani e date.

Tipi di dati in SQLite differiscono da quelli presenti in altri sistemi di gestione di database. SQLiteรˆ possibile dichiarare i tipi di dati normalmente, ma รจ comunque possibile memorizzare qualsiasi valore in qualsiasi tipo di dati.

SQLite รจ senza tipo. Non ci sono tipi di dati fissi; puoi memorizzare qualsiasi tipo di dato desideri in qualsiasi colonna. Questo รจ chiamato tipo dinamicoping.

Nei tipi statici, come in altri sistemi di gestione di database, se si dichiara una colonna con il tipo di dati intero, รจ possibile inserire solo valori di tipo di dati intero. Tuttavia, nei tipi dinamici, come in SQLite, il tipo della colonna รจ determinato dal valore inserito, e quindi SQLite memorizza quel valore a seconda del suo tipo.

SQLite Classi di archiviazione

In SQLite esistono diversi metodi di memorizzazione a seconda del tipo di valore; questi diversi metodi di memorizzazione sono chiamati classi di memorizzazione 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 INTEGER 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 memoria viene utilizzata per memorizzare i valori in virgola mobile, che occupano 8 byte di spazio di archiviazione.
  • TESTO โ€“ memorizza stringhe di testo. Supporta inoltre diverse codifiche come UTF-8, UTF-16BE o UTF-16LE.
  • BLOB โ€“ Utilizzato per memorizzare file di grandi dimensioni, come immagini o file di testo. Il valore viene memorizzato come un array di byte, identico al valore di input.

SQLite Tipo di affinitร 

L'affinitร  di tipo indica il tipo di dati consigliato per l'archiviazione in una colonna. Tuttavia, รจ comunque possibile archiviare qualsiasi tipo di dati a propria discrezione; questi tipi sono consigliati, non obbligatori.

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

Qualsiasi colonna dichiarata in an SQLite Al database viene assegnata un'affinitร  di tipo a seconda del tipo di dati dichiarato. Ecco l'elenco delle affinitร  di tipo in SQLite:

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

Ecco come SQLite determina l'affinitร  di una colonna in base al suo tipo di dati dichiarato:

  • L'affinitร  INTEGER viene assegnata se il tipo dichiarato contiene il file stringa โ€œINTโ€.
  • L'affinitร  TEXT viene 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 per la colonna non รจ specificato alcun tipo o se 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ร  NUMERIC viene assegnata per qualsiasi altro tipo di dati.

Di seguito รจ riportata anche una tabella che mostra alcuni esempi della mappa.ping fra SQLite tipi di dati e le loro affinitร  determinate da queste regole:

Mappaping fra SQLite Tipi di dati dichiarati e relative affinitร  di tipo, con esempi per INT, CHAR, TEXT, BLOB, REAL, FLOAT e NUMERIC.

Esempi di memorizzazione dei tipi di dati in SQLite

Memorizzazione dei numeri con SQLite INTEGER

Se una colonna ha un tipo di dati che contiene la parola "INT", le verrร  assegnata l'affinitร  di tipo INTEGER e verrร  memorizzata 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.
  • INTELLIGENZA MINUSCOLA, INTELLIGENZA PICCOLA, INTELLIGENZA MEDIA.

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

Memorizzazione dei numeri con SQLite VERO

I numeri REALI sono numeri con doppia precisione in virgola mobile. SQLite memorizza i numeri reali come un 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

C'รจ solo un modo per archiviare file di grandi dimensioni in un SQLite database, e questo utilizza il tipo di dati BLOB. Questo tipo di dati viene utilizzato per memorizzare file di grandi dimensioni come immagini o file di qualsiasi tipo. Il file viene convertito in un array di byte e quindi memorizzato con le stesse dimensioni del file di input.

Memorizzazione SQLite booleani

SQLite Non dispone di una classe di memorizzazione BOOLEAN separata. Al contrario, i valori BOOLEAN vengono memorizzati come INTEGRI, dove 0 rappresenta falso e 1 rappresenta vero.

Memorizzazione SQLite date e orari

รˆ possibile dichiarare date o date e orari in SQLite utilizzando uno dei seguenti tipi di dati:

  • DATA
  • APPUNTAMENTO
  • TIMESTAMP
  • ORARIO

Nota che non esiste una classe di archiviazione DATE o DATETIME separata in SQLiteInvece, tutti i valori dichiarati con uno dei tipi di dati precedenti vengono memorizzati in una classe di archiviazione a seconda del formato della data del valore inserito, come segue:

  • TESTO โ€“ se si inserisce il valore della data nel formato di una stringa ISO8601 (โ€œYYYY-MM-DD HH:MM:SS.SSSโ€).
  • VERO โ€“ se inserisci il valore della data come numero di giorni giuliani, il numero di giorni trascorsi dal mezzogiorno di Greenwich del 24 novembre 4714 a.C. Il valore della data viene quindi memorizzato come REALE.
  • INTEGER - come Unix Ora, il numero di secondi trascorsi dal 1970-01-01 alle 00:00:00 UTC.

DOMANDE FREQUENTI

Una classe di archiviazione รจ come SQLite memorizza fisicamente un valore: NULL, INTEGER, REAL, TEXT o BLOB, deciso per valore in fase di esecuzione. L'affinitร  di tipo รจ la classe che una colonna preferisce, scelta dal suo nome di tipo dichiarato, che SQLite tenta di candidarsi.

No. SQLite ignora il numero tra parentesi, quindi VARCHAR(50) e VARCHAR si comportano in modo identico. Entrambi ricevono affinitร  TEXT perchรฉ il nome del tipo contiene CHAR e SQLite Non impone alcun limite di lunghezza, ad eccezione del valore globale SQLITE_MAX_LENGTH.

Utilizza la funzione typeof() in una query, ad esempio SELECT typeof(colonna) FROM tabella. Restituisce la classe di archiviazione reale del valore โ€” null, integer, real, text o blob โ€” che puรฒ differire dal tipo dichiarato della colonna a causa della tipizzazione dinamica.ping.

Tabelle RIGIDE, aggiunte in SQLite 3.37, disattiva l'affinitร  di tipo e rifiuta qualsiasi valore che non corrisponda al tipo dichiarato di una colonna. Sono consentiti solo INT, INTEGER, REAL, TEXT, BLOB e ANY, dando al tipo rigidoping trovato in altri database.

Per memorizzare il denaro, utilizza un valore INTERO nell'unitร  piรน piccola, ad esempio i centesimi, per evitare gli errori di arrotondamento tipici dei valori a virgola mobile REALI. Per una precisione variabile o molto elevata, il tipo di dato TESTO conserva la stringa numerica esatta. SQLite Non ha un tipo di moneta a virgola fissa dedicato.

L'impostazione SQLITE_MAX_LENGTH limita la lunghezza di un valore TEXT o BLOB e il valore predefinito รจ un miliardo di byte. L'implementazione attuale supporta fino a 2,147,483,647 byte. รˆ possibile ridurre il limite in fase di esecuzione tramite l'interfaccia sqlite3_limit() quando necessario.

Sรฌ. Gli assistenti AI text-to-SQL trasformano una descrizione in linguaggio naturale in istruzioni CREATE TABLE, scegliendo SQLite Classi di archiviazione e affinitร  come INTEGER, TEXT e REAL. Fornire tipi di colonna esistenti migliora la precisione e il codice SQL generato dovrebbe essere rivisto prima dell'esecuzione.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub suggerisce definizioni di colonna con SQLite tipi come INTEGER, TEXT, REAL e BLOB in linea in editor come VS CodeLegge lo schema circostante e il codice di migrazione, quindi i suggerimenti di completamento riutilizzano i nomi reali di tabelle e colonne.

Riassumi questo post con: