SQLite 数据类型参考手册

与大多数刚性类型的关系型数据库(如 MySQL、PostgreSQL 或 Oracle)不同,SQLite 采用了独特的动态类型系统(Dynamic Typing)。在 SQLite 中,值的数据类型与值本身相关联,而不是与其存储的列相关联。

即使列在建表时声明了某种类型,它仍然可以存储任何类型的数据(除 INTEGER PRIMARY KEY 外)。


五大核心存储类(Storage Classes)

SQLite 数据库中的每一个存储值都归属于以下五种基本存储类之一:

  1. NULL:表示空值或未知值。
  2. INTEGER:有符号整数,根据数值大小在磁盘上动态存储为 1、2、3、4、6 或 8 字节。
  3. REAL:浮点数值,按 8 字节 IEEE 浮点数格式存储。
  4. TEXT:文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。
  5. BLOB:二进制大对象,完全按照输入的原始字节数据存储,不进行任何转换。

此外,SQLite 针对列定义还支持 NUMERIC 亲和性,它既可以容纳整型也可以容纳浮点型数据。


列的类型亲和性(Type Affinity)速查表

在 CREATE TABLE 中声明列的数据类型时,SQLite 会将其映射为五种亲和性类型之一:

声明的数据类型(示例) 推导出的类型亲和性 行为说明
INT, INTEGER, TINYINT, BIGINT INTEGER 尝试将文本转换为整型;无法转换时保留原类型
CHAR, VARCHAR, TEXT, CLOB TEXT 将数值转为文本格式存储
BLOB, 未指定任何类型 BLOB (NONE) 不做任何类型强制转换,原样保留
REAL, DOUBLE, FLOAT REAL 尝试转为 8 字节浮点数存储
NUMERIC, DECIMAL, BOOLEAN, DATE NUMERIC 优先尝试转换为整数或浮点数

常用开发实测工具

想要快速上手和验证 SQLite 数据类型的实际存储行为?推荐使用站内内置的在线工具:

目录

  1. BLOB

    在 SQLite 中, BLOB 数据类型用于存储二进制数据。
  2. INTEGER

    在 SQLite 中, INTEGER 数据类型用于存储整数值。
  3. NUMERIC

    NUMERIC 是 SQLite 中的一种数据类型,用于存储精度可变的数字。
  4. REAL

    REAL 是 SQLite 中的一种数据类型,用于存储浮点数,即带有小数点的数字。
  5. SQLite NULL 数据类型介绍

    在 SQLite 中, NULL 数据类型用于表示空值。
  6. TEXT

    TEXT 是 SQLite 中的一种数据类型,用于存储文本字符串。