在sqlite中,REAL和NUMERIC数据类型似乎相似。由于NUMERIC支持Decimal(10,5),何时应该使用REAL代替?
https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm
我正在使用sqlite3。
答案 0 :(得分:12)
SQLite与大多数其他RDBMS不同,它使用动态类型系统。这意味着,尽管该列属于一种类型,但SQLite的5个存储类中的任何一个都可以出现在任何列中。但是显然,在单个列中混合类型不是最佳实践。例如,在同一列中混合数字和字符数据是一种不良做法,就像在任何数据库中一样。 SQLite中的五个实际存储类是:
REAL
存储类用于具有小数部分的数字数据。浮点数将适合此类别。其他不带小数部分的数字将分配给INTEGER
存储类。
SQLite引入了一个称为“亲和力”类型的概念。引入它们是为了最大程度地提高SQLite与其他数据库之间的兼容性。从documentation中,我们可以看到NUMERIC
相似性与以下类型相关联:
因此,如果您打算存储精确的DECIMAL(10,5)
数据,那么NUMERIC
相似性将很有意义。另一方面,亲和力REAL
与浮点(不精确)十进制数据相关联。同样,您可以将任一类型存储在任一列中,但是从兼容性的角度来看,您可以遵循相似性规则。