在SQLite中声明数据类型

时间:2010-03-13 00:30:20

标签: sqlite

我熟悉type affinity在SQLite中的工作方式:您可以将列类型声明为您想要的任何内容,所有重要的是类型名称是否包含“INT”,“CHAR”,“FLOA”,但是,对于使用什么类型的名称,是否有常用的约定?

例如,如果你有一个整数列,区分TINYINT,SMALLINT,MEDIUMINT和BIGINT是否更好,或者只是将所有内容都声明为INTEGER?

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

  • INTEGER
  • REAL
  • CHAR(n) - 用于已知用
  • 固定的字符串
  • VARCHAR(n) - 用于已知最大宽度的字符串
  • TEXT - 用于所有其他字符串
  • BLOB
  • BOOLEAN
  • DATE - “YYYY-MM-DD”格式的字符串
  • TIME - “HH:MM:SS”格式的字符串
  • TIMESTAMP - “YYYY-MM-DD HH:MM:SS”格式的字符串

(请注意,最后三个与类型亲和力相反。)

3 个答案:

答案 0 :(得分:1)

我建议不要使用自定义类型。我在版本3.5.6中观察到,尚未定义的类型有时会导致INSERT命令被拒绝。也许是千分之一。我不知道自那以后是否解决了这个问题。

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

答案 1 :(得分:0)

由于SQLite是无类型的,因此使用任何类型都可以更轻松地查看模式的外观。或者您可以将类型与代码库匹配。

答案 2 :(得分:0)

我打算和凯文一起去。简而言之,要把自己打倒。如果适合您的架构,请构建全新的数学领域。使用ORM的类名。或者为前女友命名每种类型(PRIMARY KEY INTEGER除外)。最后,SQLite更多地是关于如何访问和使用数据。