2010-03-13 62 views
2

我熟悉type affinity在SQLite中的工作原理:您可以将列类型声明为任何你想要的,所有重要的是类型名称是否包含“INT”,“CHAR”,“FLOA”等等。但是,有什么类型的名称使用的常用惯例?在SQLite中声明数据类型

例如,如果您有一个整数列,最好是区分TINYINT,SMALLINT,MEDIUMINT和BIGINT,还是仅将所有内容都声明为INTEGER?

到目前为止,我一直在使用下列内容:

  • INTEGER
  • REAL
  • CHAR(N) - 用于固定
  • VARCHAR(n)的一个已知的字符串 - - 用于与已知的最大宽度
  • 文本串 - 对于所有其它串
  • BLOB
  • BOOLEAN
  • DATE - 字符串 “YYYY-MM-DD” 格式
  • 时间 - 字符串 “HH:MM:SS” 格式
  • TIMESTAMP - 字符串“YYYY-MM-DD HH:MM :SS”格式

(注意最后三个违背型亲和力。)

回答

1

我会建议不要使用自定义类型。我在3.5.6版中发现,尚未定义的类型有时会导致INSERT命令被拒绝。可能是1000个中的1个。我不知道这是从那以后解决的。

在任何情况下,键入列TINYINT或SMALLINT都没有大小优势。唯一的好处是在SQLite之外,可以用其他程序解析列类型,或者满足个人对整洁的需求。所以我强烈建议使用由SQLite定义的基类型并坚持这些类型。

0

由于SQLite是无类型,使用任何类型更容易给你看的架构是什么样子。或者你可以将这些类型与你的代码库相匹配。

0

我要和凯文一起去这个。简而言之,将自己击倒。如果它适合你的模式,那么就构成全新的数学领域。使用您的ORM的类名称。或者为前女友命名每种类型(除了PRIMARY KEY INTEGER)。最后,SQLite更多地介绍如何访问和使用数据。