sqlite中的整数数据类型有什么区别?
INT
INTEGER
TINYINT
SMALLINT
MEDIUMINT
BIGINT
未签名的大INT
INT2
INT8
哪一个可以存储32位整数,哪一个可以存储64位值?是否支持128位?
我发现整数数据大小现在有点令人困惑,例如INTEGER可以存储多达64位的有符号整数,但是值可能只占用磁盘上的32位。
只有当存储的值小于int32 max值时,才会在INTEGER列上调用sqlite3_column_int
,如果更高,它将如何表现?
答案 0 :(得分:53)
从SQLite3文档:
http://www.sqlite.org/datatype3.html
大多数SQL数据库引擎(除了以外的每个SQL数据库引擎) 据我们所知,SQLite使用静态,严格的类型。随着静态 输入时,值的数据类型由其容器确定 - 存储值的特定列。
SQLite使用更通用的动态类型系统。在SQLite中 值的数据类型与值本身相关联,而不是与其相关联 容器。 SQLite的动态类型系统是向后兼容的 与其他数据库引擎的更常见的静态类型系统 在静态类型数据库上工作的SQL语句的意义 应该在SQLite中以相同的方式工作。但是,动态输入 SQLite允许它做传统中不可能的事情 严格类型化的数据库。
所以在MS Sql Server中(例如),“int”==“整数”== 4个字节/ 32位。
相比之下,SqlLite“整数”可以容纳你输入的内容:从1字节字符到8字节长字符。
上面的链接列出了所有类型,并提供了有关Sqlite“affinity”的更多详细信息。
您所指的C / C ++接口必须使用强类型语言。
所以有两个API:sqlite3_column_int(),最多4个字节;和sqlite3_column_int64()