【问题标题】:What is the difference between SQLite integer data types like int, integer, bigint, etc.?SQLite 整数数据类型(如 int、integer、bigint 等)之间有什么区别?
【发布时间】:2011-11-12 08:46:46
【问题描述】:

sqlite中整数数据类型有什么区别?

INT
整数
小灵
小灵通
中型
BIGINT
未签名的大整数
INT2
INT8

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

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

仅当存储的值小于 int32 最大值时,在 INTEGER 列上调用 sqlite3_column_int 才有效,如果更高,它将如何表现?

【问题讨论】:

标签: sqlite


【解决方案1】:

来自 SQLite3 文档:

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

大多数 SQL 数据库引擎(除 SQLite,据我们所知)使用静态的、严格的类型。带静电 键入时,值的数据类型由其容器确定 - 存储值的特定列。

SQLite 使用更通用的动态类型系统。在 SQLite 中, 值的数据类型与值本身相关联,而不是与其相关联 容器。 SQLite 的动态类型系统向后兼容 与其他数据库引擎中更常见的静态类型系统 在静态类型数据库上工作的 SQL 语句的意义 应该在 SQLite 中以相同的方式工作。但是,动态输入 SQLite 允许它做传统中不可能做的事情 严格类型的数据库。

所以在 MS Sql Server 中(例如),“int” == “integer” == 4 字节/32 位。

相比之下,SqlLite“整数”可以容纳您放入其中的任何内容:从 1 字节字符到 8 字节长。

以上链接列出了所有类型,并提供了有关 Sqlite“亲和性”的更多详细信息。

您所指的 C/C++ 接口必须适用于强类型语言。

所以有两个API:sqlite3_column_int(),max 4-byte;和 sqlite3_column_int64()

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

【讨论】:

  • 但是请注意,确切的类型名称在自动增量列中很重要:这些必须是INTEGER(和PRIMARY KEY),而不仅仅是INT
猜你喜欢
  • 2011-02-15
  • 1970-01-01
  • 2013-09-21
  • 2013-10-02
  • 2014-05-30
  • 2011-03-26
  • 2010-10-28
  • 2012-04-17
  • 2015-01-29
相关资源
最近更新 更多