sqlite& mysql字段类型?

时间:2010-01-25 16:44:37

标签: mysql sqlite

您好我正在开发我的第一个sqlite项目,我只是想知道sqlite是否支持MYsql所做的所有相同的字段类型,例如DATETIME,TINYINT,VARCHAR等。

如果sqlite支持有限的字段类型,如果有人可以提供给我,那将是一个很大的帮助。

谢谢!

3 个答案:

答案 0 :(得分:3)

sqlite的数据类型非常有限。根据{{​​3}},它有以下5种数据类型:

  • NULL 即可。该值为NULL值。
  • INTEGER 即可。该值是有符号整数,存储为1,2,3,4,6或8个字节,具体取决于值的大小。
  • REAL 即可。该值是浮点值,存储为8字节IEEE浮点数。
  • 文字即可。该值是一个文本字符串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储。
  • BLOB 即可。该值是一个数据块,完全按照输入的方式存储。

所以回答你的问题,不,sqlite和mysql没有相同的数据类型。

答案 1 :(得分:3)

旧线程,但我认为海报要求mySQL和SQLite数据类型之间的映射。由于这篇文章在我搜索时出现在Google上,所以我发现这是一个更具体回答海报问题的链接(YMMV):

http://drupal.org/node/159605

答案 2 :(得分:0)

对不起我的英文;

SQLite有5个“类存储”,它比数据类型更通用: 空值, INTEGER(1到8个字节), REAL(8字节,浮点), TEXT(字符串)和 BLOB(或类型/类没有定义)。

其他数据类型是使用逻辑定义“亲和力”来定义的。此亲和关系用于将任何类型“转换”为仅有5个类。

Sqlite查看列中的数据类型;匹配亲和力;见价值通知;如有必要,执行转换,并保存值。 例如,TINYCHAR与TEXT具有亲缘关系,然后将保存为TEXT。

如果您了解逻辑,您将理解数据类型之间的桥梁。 “3,14”可以保存为REAL或TEXT

SqLite在创建coumun / table时查找已知数据类型的字符串。

如果通知的数据类型中有“INT”(tinyint,smalint,integer或任何带有“INT”的单词),则该值将存储为INTEGER。如果值是文本(“10”)将转换为数字(10)。

如果数据类型名称中没有“INT”,则Sqlite将查找“CHAR”,“CLOB”或“TEXT”表达式。如果结束,则该值将存储为“TEXT”。如果Value是数字,则将转换为文本。

如果数据类型名称中没有“INT”,“CHAR”,“CLOB”或“TEXT”,则Sqlite将查找“BLOB”表达式。如果找到“BLOB”,则该值将存储为NONE(未定义类型)。

如果列的声明类型包含任何字符串“REAL”,“FLOA”或“DOUB”,那么该列将为REAL

如果上面的任何测试结果为真,则将存储为NUMERIC(带浮点的数字)。如果值是一个字符串,sqlite将尝试转换。如果是表示整数的整数ou字符串,则将保存为浮点数。 (在这种情况下有一些优化。

对于日期和时间,没有specift类型,byt,有一些函数来处理值。 如果值输入为: TEXT =作为ISO8601字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。 REAL =作为朱利安日数,是公元前4714年11月24日格林威治中午以来的天数。根据公历格里高利历。 INTEGER = as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。