您好我正在开发我的第一个sqlite项目,我只是想知道sqlite是否支持MYsql所做的所有相同的字段类型,例如DATETIME,TINYINT,VARCHAR等。
如果sqlite支持有限的字段类型,如果有人可以提供给我,那将是一个很大的帮助。
谢谢!
答案 0 :(得分:3)
sqlite的数据类型非常有限。根据{{3}},它有以下5种数据类型:
所以回答你的问题,不,sqlite和mysql没有相同的数据类型。
答案 1 :(得分:3)
旧线程,但我认为海报要求mySQL和SQLite数据类型之间的映射。由于这篇文章在我搜索时出现在Google上,所以我发现这是一个更具体回答海报问题的链接(YMMV):
答案 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以来的秒数。