SQLite Tipos de datos
El tipo de datos de SQLite es un atributo que se utiliza para especificar el tipo de datos de cualquier objeto. Cada columna, variable y expresión en SQLite tiene un tipo de datos asociado.
Puede utilizar estos tipos de datos al crear tablas. SQLite utiliza un sistema de tipos dinámico más general. En SQLite, el tipo de datos de un valor está relacionado con el valor en sí, no con su contenedor.
Clases de almacenamiento de SQLite
Cada valor almacenado en una base de datos SQLite tiene una de las siguientes clases de almacenamiento:
| Clase de almacenamiento | Descripción |
|---|---|
| NULL | El valor es un valor NULL. |
| INTEGER | El valor es un entero con signo, almacenado en 1, 2, 3, 4, 6 u 8 bytes según el tamaño del valor. |
| REAL | El valor es un valor de coma flotante, almacenado como un número de coma flotante IEEE de 8 bytes. |
| TEXT | El valor es una cadena de texto, almacenada utilizando la codificación de la base de datos (UTF-8, UTF-16BE o UTF-16LE). |
| BLOB | El valor es un dato blob, almacenado exactamente según su entrada. |
Las clases de almacenamiento de SQLite son algo más generales que los tipos de datos. La clase de almacenamiento INTEGER, por ejemplo, incluye 6 tipos de datos enteros diferentes de distintas longitudes.
Tipos de afinidad (Affinity) de SQLite
SQLite admite el concepto de tipos de afinidad de columna. Cualquier columna todavía puede almacenar cualquier tipo de datos; al insertar datos, los datos de ese campo adoptarán preferentemente el tipo de afinidad como forma de almacenamiento del valor. La versión actual de SQLite admite los siguientes cinco tipos de afinidad:
| Tipo de afinidad | Descripción |
|---|---|
| TEXT | Los datos numéricos deben convertirse a formato de texto antes de insertarse en el campo de destino. |
| NUMERIC | Cuando se insertan datos de texto en un campo con afinidad NUMERIC, si la operación de conversión no provoca pérdida de información y es totalmente reversible, SQLite convierte los datos de texto en datos de tipo INTEGER o REAL; si la conversión falla, SQLite aún almacena los datos como TEXT. Para datos nuevos de tipo NULL o BLOB, SQLite no realiza ninguna conversión y los almacena directamente como NULL o BLOB. Cabe señalar adicionalmente que, para texto constante en formato de coma flotante, como "30000.0", si el valor puede convertirse a INTEGER sin perder información numérica, SQLite lo convertirá al modo de almacenamiento INTEGER. |
| INTEGER | Para los campos con tipo de afinidad INTEGER, las reglas son equivalentes a NUMERIC, con la única diferencia al ejecutar expresiones CAST. |
| REAL | Sus reglas son básicamente equivalentes a NUMERIC, con la única diferencia de que no convertirá datos de texto como "30000.0" al modo de almacenamiento INTEGER. |
| NONE | No realiza ninguna conversión, simplemente almacena los datos según el tipo de datos al que pertenecen. |
Tipos de afinidad (Affinity) de SQLite y nombres de tipos
La siguiente tabla enumera los nombres de los distintos tipos de datos que se pueden utilizar al crear tablas SQLite3, y también muestra los tipos de afinidad correspondientes:
| Tipo de datos | Tipo de afinidad |
|---|---|
| INTEGER |
| TEXT |
| BLOB |
| REAL |
| NUMERIC |
Tipo de dato Boolean
SQLite no tiene una clase de almacenamiento Boolean separada. En cambio, los valores booleanos se almacenan como enteros 0 (falso) y 1 (verdadero).
Tipos de datos Date y Time
SQLite no tiene una clase de almacenamiento separada para almacenar fechas y/o horas, pero SQLite puede almacenar fechas y horas como valores TEXT, REAL o INTEGER.
| Clase de almacenamiento | Formato de fecha |
|---|---|
| TEXT | Fecha con el formato "YYYY-MM-DD HH:MM:SS.SSS". |
| REAL | Número de días transcurridos desde el mediodía del 24 de noviembre de 4714 a.C. (hora de Greenwich). |
| INTEGER | Número de segundos desde 1970-01-01 00:00:00 UTC. |
Puede almacenar fechas y horas en cualquiera de los formatos anteriores, y puede utilizar las funciones integradas de fecha y hora para convertir libremente entre diferentes formatos.
Otras extensiones