sqlite使用动态类型系统,在sqlite中,值的数据类型和值本身,而不是和它的容器,关联在一起的。sqlite的动态类型系统和其他数据库引擎的静态类型系统是兼容的,这样在静态类型的数据库上执行的sql语句也可以在sqlite中执行。
1.0 存储类和数据类型
每个存储在sqlite数据库中(或被数据库引擎操纵的)的值都有下列存储类的一个:
- NULL。空值。
- INTEGER。有符号整数,存储在1、2、3、4、6或8个字节中。
- REAL。浮点数,存储为8字节的IEEE浮点数。
- TEXT。文本串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储。
- BLOB。大块数据。
注意存储类(storage class)比数据类型更一般。INTEGER存储类,例如,包含6种长度不同的整数数据类型。这在磁盘中是有区别的。不过一旦INTEGER值从磁盘读到内容中进行处理的时候,这些值会转化为更普通的数据类型(8位有符号整数)。因此在大部分情况下,存储类和数据类型是不易分辨的,这两个术语可以交换使用。
在sqlite 3 数据库中,任何列,除了INTEGER PRIMARY KEY列,都可以存储任何存储类的值。
sql语句中的所有值,不管是sql语句中嵌入的字面值,还是预编译的sql语句中的参数,都有一个隐式的存储类。在下面描述的条件下,在查询执行阶段,数据库引擎可能会在数字存储类(INTEGER和REAL)和TEXT存储类之间转换。
原文链接:https://www.f2er.com/sqlite/201672.html