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 almacenamientoDescripción
NULLEl valor es un valor NULL.
INTEGEREl valor es un entero con signo, almacenado en 1, 2, 3, 4, 6 u 8 bytes según el tamaño del valor.
REALEl valor es un valor de coma flotante, almacenado como un número de coma flotante IEEE de 8 bytes.
TEXTEl valor es una cadena de texto, almacenada utilizando la codificación de la base de datos (UTF-8, UTF-16BE o UTF-16LE).
BLOBEl 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 afinidadDescripción
TEXTLos datos numéricos deben convertirse a formato de texto antes de insertarse en el campo de destino.
NUMERICCuando 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.
INTEGERPara los campos con tipo de afinidad INTEGER, las reglas son equivalentes a NUMERIC, con la única diferencia al ejecutar expresiones CAST.
REALSus 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.
NONENo 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 datosTipo de afinidad
  • INT

  • INTEGER

  • TINYINT

  • SMALLINT

  • MEDIUMINT

  • BIGINT

  • UNSIGNED BIG INT

  • INT2

  • INT8

INTEGER
  • CHARACTER(20)

  • VARCHAR(255)

  • VARYING CHARACTER(255)

  • NCHAR(55)

  • NATIVE CHARACTER(70)

  • NVARCHAR(100)

  • TEXT

  • CLOB

TEXT
  • BLOB

  • Tipo no especificado

BLOB
  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

REAL
  • NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

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 almacenamientoFormato de fecha
TEXTFecha con el formato "YYYY-MM-DD HH:MM:SS.SSS".
REALNúmero de días transcurridos desde el mediodía del 24 de noviembre de 4714 a.C. (hora de Greenwich).
INTEGERNú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