何时应该在sqlite中使用数据类型REAL与NUMERIC?

use*_*486 5 sqlite

在sqlite中,REAL和NUMERIC数据类型看起来很相似.由于NUMERIC支持Decimal(10,5),何时应该使用REAL?

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

我正在使用sqlite3.

Tim*_*sen 17

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

  • 空值
  • 整数
  • 真实
  • 文本
  • BLOB

REAL存储类用于与十进制部件的数值数据.浮子适合这个类别.其他没有小数组件的数字将分配给INTEGER存储类.

SQLite引入了一种称为"亲和力"的概念.引入它们是为了最大化SQLite与其他数据库之间的兼容性.从文档中,我们可以看到NUMERIC关联性与以下类型相关联:

  • 数字
  • DECIMAL(10,5)
  • 布尔
  • 日期
  • 约会时间

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