什么时候应该在sqlite中使用REAL类型和NUMERIC类型的数据?

时间:2018-09-13 09:06:53

标签: sqlite

在sqlite中,REAL和NUMERIC数据类型似乎相似。由于NUMERIC支持Decimal(10,5),何时应该使用REAL代替?

https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm

我正在使用sqlite3。

1 个答案:

答案 0 :(得分:12)

SQLite与大多数其他RDBMS不同,它使用动态类型系统。这意味着,尽管该列属于一种类型,但SQLite的5个存储类中的任何一个都可以出现在任何列中。但是显然,在单个列中混合类型不是最佳实践。例如,在同一列中混合数字和字符数据是一种不良做法,就像在任何数据库中一样。 SQLite中的五个实际存储类是:

  • NULL
  • INTEGER
  • 真正
  • TEXT
  • BLOB

REAL存储类用于具有小数部分的数字数据。浮点数将适合此类别。其他不带小数部分的数字将分配给INTEGER存储类。

SQLite引入了一个称为“亲和力”类型的概念。引入它们是为了最大程度地提高SQLite与其他数据库之间的兼容性。从documentation中,我们可以看到NUMERIC相似性与以下类型相关联:

  • NUMERIC
  • DECIMAL(10,5)
  • BOOLEAN
  • 日期
  • DATETIME

因此,如果您打算存储精确的DECIMAL(10,5)数据,那么NUMERIC相似性将很有意义。另一方面,亲和力REAL与浮点(不精确)十进制数据相关联。同样,您可以将任一类型存储在任一列中,但是从兼容性的角度来看,您可以遵循相似性规则。