当前位置:  技术问答>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中应该怎样存储?

|
其实在开始定义表的时候,字段类型都可以不写,
看你第一次插入的数据是什么类型就是什么类型,
都是可变长数据。

另外自己多操作实践就能得出结论了!


|
真正的存储类别只有以下五种:
      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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux sqlite3 帮帮忙
  • sqlite3的内存释放问题。
  • undefined reference to `sqlite3_open'(在线等 ~)
  • Qore SQLite3 Module
  • linux下的sqlite3.h头文件找不到
  • linux的sqlite3怎么能在WINDOWS中也能访问
  • Sqlite3管理工具 Sqliteman
  • 将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库
  • android通过jxl读excel存入sqlite3数据库
  • python操作数据库之sqlite3打开数据库、删除、修改示例
  • Python操作sqlite3快速、安全插入数据(防注入)的实例
  • Python SQLite3数据库操作类分享


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3