在SQLite中声明数据类型

在SQLite中声明数据类型,sqlite,Sqlite,我熟悉SQLite的工作原理:您可以根据需要声明任何列类型,重要的是类型名是否包含“INT”、“CHAR”、“FLOA”等。但是对于使用什么类型名,是否有一个常用的约定 例如,如果您有一个整数列,那么最好区分TINYINT、SMALLINT、MEDIUMINT和BIGINT,还是将所有内容声明为整数 到目前为止,我一直在使用以下方法: 整数 真实的 CHAR(n)--对于具有已知固定长度的字符串 VARCHAR(n)——对于具有已知最大宽度的字符串 文本--用于所有其他字符串 斑点 布尔值 日

我熟悉SQLite的工作原理:您可以根据需要声明任何列类型,重要的是类型名是否包含“INT”、“CHAR”、“FLOA”等。但是对于使用什么类型名,是否有一个常用的约定

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

到目前为止,我一直在使用以下方法:

  • 整数
  • 真实的
  • CHAR(n)--对于具有已知固定长度的字符串
  • VARCHAR(n)——对于具有已知最大宽度的字符串
  • 文本--用于所有其他字符串
  • 斑点
  • 布尔值
  • 日期--“YYYY-MM-DD”格式的字符串
  • 时间--“HH:MM:SS”格式的字符串
  • 时间戳--“YYYY-MM-DD HH:MM:SS”格式的字符串

(请注意,最后三个与类型关联相反。)

由于SQLite是无类型的,所以请使用任何类型,以便更容易地查看模式。或者,您可以将这些类型与您的代码库相匹配。

在这一点上,我将与Kevin一起讨论。简言之,击倒你自己。如果数学领域适合你的模式,那就创造一个全新的领域。使用ORM的类名。或者为前女友命名每种类型(主键整数除外)。最后,SQLite更多的是关于如何访问和使用数据。

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

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