当前位置: 技术问答>linux和unix
sqlite3数据类型的请教
来源: 互联网 发布时间:2016-04-09
本文导语: 小弟最近想学习一下数据库,选择的是sqlite数据库。可是刚开始看书就出现了对数据类型不理解的地方。 sqlite网站上写的sqlite支持下面的数据类型:INTEGER,REAL,TEXT,NULL,和BLOB。 但是在sqlite的命令行例子中却出现...
小弟最近想学习一下数据库,选择的是sqlite数据库。可是刚开始看书就出现了对数据类型不理解的地方。
sqlite网站上写的sqlite支持下面的数据类型:INTEGER,REAL,TEXT,NULL,和BLOB。
但是在sqlite的命令行例子中却出现了下面的数据类型:create table tbl1(one varchar(10), two small int);
我不明白为何又出现了varchar类型和small int类型?
另外,还有就是C中的数据类型和sqlite数据类型的对应关系:
我们可以将
C Sqlite
int INTEGER(4Bytes)
char INTERGER(1Byte)
short INTERGER(2Bytes)
但是对于其他类型就不是很了解了。
比如 C语言的unsigned long 类型在sqlite中应该怎样存储?
sqlite网站上写的sqlite支持下面的数据类型:INTEGER,REAL,TEXT,NULL,和BLOB。
但是在sqlite的命令行例子中却出现了下面的数据类型:create table tbl1(one varchar(10), two small int);
我不明白为何又出现了varchar类型和small int类型?
另外,还有就是C中的数据类型和sqlite数据类型的对应关系:
我们可以将
C Sqlite
int INTEGER(4Bytes)
char INTERGER(1Byte)
short INTERGER(2Bytes)
但是对于其他类型就不是很了解了。
比如 C语言的unsigned long 类型在sqlite中应该怎样存储?
|
其实在开始定义表的时候,字段类型都可以不写,
看你第一次插入的数据是什么类型就是什么类型,
都是可变长数据。
另外自己多操作实践就能得出结论了!
看你第一次插入的数据是什么类型就是什么类型,
都是可变长数据。
另外自己多操作实践就能得出结论了!
|
真正的存储类别只有以下五种:
NULL. The value is a NULL value.
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number.
TEXT. The value is a text string, stored using the database encoding (UTF-8, utf-8BE or utf-8-LE).
BLOB. The value is a blob of data, stored exactly as it was input.
至于varchar,small int等这些类型描述只是为Column Affinity提供建议,不是必须的。比如Sqlite看到类型声明包含INT他就认为这个字段应该以INTEGER类型存储,实际中你可以给它赋任何类型的值,只不过都会被适当转换为INTEGER存储,像C的unsigned long(假设32位平台)仍然可以用4 bytes的INTEGER存储,至于使用时要解释为signed long或unsigned long都是由你决定的。详细参考http://www.sqlite.org/datatype3.html
NULL. The value is a NULL value.
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.
REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number.
TEXT. The value is a text string, stored using the database encoding (UTF-8, utf-8BE or utf-8-LE).
BLOB. The value is a blob of data, stored exactly as it was input.
至于varchar,small int等这些类型描述只是为Column Affinity提供建议,不是必须的。比如Sqlite看到类型声明包含INT他就认为这个字段应该以INTEGER类型存储,实际中你可以给它赋任何类型的值,只不过都会被适当转换为INTEGER存储,像C的unsigned long(假设32位平台)仍然可以用4 bytes的INTEGER存储,至于使用时要解释为signed long或unsigned long都是由你决定的。详细参考http://www.sqlite.org/datatype3.html
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。