像int,integer,bigint等SQLite整型数据types有什么区别?

整数数据types在sqlite之间有什么区别?

INT
整数
TINYINT
SMALLINT
MEDIUMINT
BIGINT
UNSIGNED BIG INT
INT2
INT8

哪一个可以存储32位整数,哪一个可以存储64位值? 有支持128位吗?

我发现整数数据的大小现在有点混乱,例如INTEGER可以存储多达64位的有符号整数,但是磁盘上的值可能只占用32位。

在INTEGER列上调用sqlite3_column_int只有当存储的值小于int32的最大值时才起作用,如果更高,它将如何performance?

从SQLite3文档:

http://www.sqlite.org/datatype3.html

大多数SQL数据库引擎(据我们所知,SQLite以外的每个SQL数据库引擎)都使用静态的严格types。 使用静态types,值的数据types由其容器决定,即存储值的特定列。

SQLite使用更一般的dynamictypes系统。 在SQLite中,值的数据types与值本身相关联,而不与其容器相关联。 SQLite的dynamictypes系统向后兼容其他数据库引擎的更常见的静态types系统,这意味着在静态types数据库上工作的SQL语句应该在SQLite中以相同的方式工作。 但是,SQLite中的dynamictypes允许它执行在传统的严格types数据库中不可能的事情。

所以在MS Sql Server(例如),一个“int”==“整数”== 4个字节/ 32位。

相比之下,一个SqlLite“整数”可以容纳任何你input的内容:从1字节的字符到8字节的长字符。

上面的链接列出了所有types,并给出了关于Sqlite“affinity”的更多细节。

您所指的C / C ++接口必须使用强types语言。

所以有两个API:sqlite3_column_int(),最大4字节; 和sqlite3_column_int64()

http://www.sqlite.org/capi3ref.html#sqlite3_int64