SQLite dataypes的长度?

问题描述:

我完全不熟悉SQLite(实际上是5分钟前),但我确实知道Oracle和MySql的后端。SQLite dataypes的长度?

问题:我想知道SQLite支持的每种数据类型的长度,例如bigint和smallint之间的差异。我搜遍了SQLite的文档(只谈论亲和力,只有重要吗?),SO线程,谷歌...并没有发现任何东西。

我的猜测:我只是稍微修改了SQL92规范,讲数据类型和它的关系,但不是它的长度,这是很明显我承担。但是我已经讨论了Oracle和MySql数据类型规范,并且至少指定的长度对于整数大部分是相同的。我应该假设SQLite使用相同的长度吗?

旁白问题:我错过了关于SQLite文档的东西吗?还是我错过了一些关于SQL的东西?提出这个问题是因为我无法真正理解SQLite文档为什么没有像数据类型长度那样指定基本的东西。这对我来说没有意义!虽然我确信有一个简单的命令来发现长度..但为什么不把它们写入文档?

谢谢!

+0

uhhhh ....你究竟在寻找什么? char,int等的最大长度?它在文件中... – t0mm13b 2010-03-23 21:47:18

+0

是。最大长度是我应该要求的准确问题,谢谢。我真的没有找到它。 – XF01 2010-03-23 21:48:30

是对下列可能的答案?:

SQLite的文档的数据类型部分说:

“ INTEGER的值是一个带符号的整数,存储在1,2,3,4, 6,或8个字节取决于值的大小 “

该文档指定INTEGER存储类型以下数据类型:INT,INTEGER,TINYINT,SMALLINT,MEDIUMINT,BIGINT,UNSIGNED BIG INT,INT2,INT8

因此它是正确的假设: TINYINT:1B SMALLINT:2B MEDIUMINT:3B BIGINT:4B

哪些实际上相同映射到MySQL和Oracle数据类型?

OMFG

+4

报价中提到“价值的重要性” - 它确实意味着它!大小不取决于列类型。在SQLite值中有类型,列有亲和力。 – 2010-03-23 22:21:57

+0

同上它的出现,再次感谢 – XF01 2010-03-24 09:06:45

我完全新的SQLite的文档,但我发现它在不到30秒。

Datatypes In SQLite Version 3

+0

发现,在5秒实际上昨天,所以烨.. – XF01 2010-03-24 09:04:53

在SQLite的数据类型没有长度,值具有的长度。您定义为TINYINT的列可以包含BLOB,反之亦然。

+0

应该想想这个答案很aslept权利,但现在周到。谢谢 – XF01 2010-03-24 09:05:59

当涉及到字段类型时,SQLite有点奇怪。您可以在任何字段中存储任何类型(I.E.将blob放入整数字段中)。它对整数的工作方式是:取决于。

虽然您的应用程序可能使用长(64位)来存储值,但如果它实际上是< 128,那么SQLite将只使用一个字节来存储它。如果该值大于等于128且< 16384则它将使用2个字节。该算法(我记得)是它使用每个字节的7位与第8位用来表示是否需要另一个字节。这对非负值很有效,但会导致所有负值需要9个字节进行存储。

INTEGER。该值是一个有符号整数,根据值的大小存储在1,2,3,4,6或8个字节中。

8字节>> mix size is max:9223372036854775807