当前位置:  开发笔记 > 数据库 > 正文

相关的SQLite数据类型如INT,INTEGER,SMALLINT和TINYINT有什么区别?

如何解决《相关的SQLite数据类型如INT,INTEGER,SMALLINT和TINYINT有什么区别?》经验,为你挑选了3个好方法。

在SQLite3中创建表时,当遇到意味着类似内容的所有可能数据类型时,我会感到困惑,所以有人能告诉我以下数据类型之间的区别吗?

INT, INTEGER, SMALLINT, TINYINT

DEC, DECIMAL

LONGCHAR, LONGVARCHAR

DATETIME, SMALLDATETIME

是否有某些文件列出了最小/最大值.各种数据类型的能力?例如,我猜smallint的最大值大于tinyint,但值小于整数,但我不知道这些容量是什么.



1> J. Polfer..:

SQLite从技术上讲,没有数据类型,清单打字系统中有存储类,是的,如果你习惯了传统的RDBMSes ,那就太混乱了.内部的所有内容都存储为文本.基于亲和力(分配给列的ala数据类型)将数据类型强制/转换为各种存储位置.

我建议你做的最好的事情是:

    暂时忘记您曾经了解的有关独立数据库数据类型的所有内容

    SQLite网站上阅读上面的链接.

    根据旧架构获取类型,并查看它们映射到的内容 SQLite

    将所有数据迁移到SQLite数据库.

注意:数据类型限制可能很麻烦,尤其是在您添加持续时间,日期或具有该性质的事物时SQL.SQLite对于那种事情,很少有内置函数.但是,SQLite确实提供了一种简单的方法,您可以通过sqlite3_create_function库函数创建自己的内置函数,以添加持续时间和此类事物.您将使用该工具代替传统的存储过程.


我同意你的观点,一开始似乎有限.但是,我认为你会发现SQLite非常宽容你如何通过它的亲和系统将数据放入数据库.SQLite不是独立的 - 它被设计成一个小的数据库后端,你放在小应用程序中只能通过代码中的数据库访问API访问.解决SQLite中的问题通常是要弄清楚他们希望你如何做到这一点.
@Alan:您可能会发现将数字关联列声明为"DATE"或"BOOLEAN"很有用,但我不打算区分不同大小的整数.对于"INTEGER PRIMARY KEY"的情况尤其如此,这是确切类型名称重要的一种情况.

2> dan04..:

区别在于语法糖.只有少数类型名称的子串与类型亲和关系一样重要.

INT,INTEGER,SMALLINT,TINYINT→INTEGER亲和性,因为它们都包含"INT".

LONGCHAR,LONGVARCHAR→TEXT亲和力,因为它们包含"CHAR".

DEC,DECIMAL,DATETIME,SMALLDATETIME→NUMERIC,因为它们不包含任何重要的子串.

SQLite站点列出了确定关联性的规则.

如果您坚持严格键入,可以使用CHECK约束来实现它:

CREATE TABLE T (
   N   INTEGER CHECK(TYPEOF(N) = 'integer'),
   Str TEXT CHECK(TYPEOF(Str) = 'text'),
   Dt  DATETIME CHECK(JULIANDAY(Dt) IS NOT NULL)
);

但我从不打扰它.

至于每种类型的容量:

INTEGER总是签署64位.请注意,SQLite优化了幕后小整数的存储,因此TINYINT无论如何都不会有用.

REAL总是64位(double).

TEXT并且BLOB具有由预处理器宏确定的最大大小,默认值为1,000,000,000字节.



3> Jay..:

其中大多数都是兼容性的.你真的只有整数,浮点数,文本和blob.日期可以存储为数字(unix时间是整数,微软时间是浮点数)或文本.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有