sqlite3中的数据类型
大多数的数据库引擎(到现在据我们所知的除了 sqlite 的每个 sql 数据库引擎)都使用静态的、刚性的类型,使用静态类型,数据的类型就由它的容器决定,这个容器是这个指被存放的特定列。 Sqlite 使用一个更一般的动态类型系统, sqlite 中, 值的数据类型跟值本身相关,而不是与它的容器相关 。 Sqlite 的动态类型系统和其他数据库的更为一般的静态类型系统相兼容,但同时, sqlite 中的动态类型允许它能做到一些传统刚性类型数据库所不可能做到的事。 1. 存储类和数据类型 每个存放在 sqlite 数据库中(或者由这个数据库引擎操作)的值 都有下面中的一个存储类 : l NULL ,值是 NULL l INTEGER ,值是有符号整形,根据值的大小以 1,2,3,4,6 或 8 字节存放 l REAL ,值是浮点型值,以 8 字节 IEEE 浮点数存放 l TEXT ,值是文本字符串,使用数据库编码( UTF-8 , UTF-16BE 或者 UTF-16LE )存放 l BLOB ,只是一个数据块,完全按照输入存放(即没有准换) 从上可以看出存储类比数据类型更一般化。比如 INTEGER 存储类,包括 6 中不同长度的不同整形数据类型,这在磁盘上造成了差异。但是只要 INTEGER 值被从磁盘读出进入到内存进行处理,它们被转换成最一般的数据类型( 8- 字节有符号整形