版权声明:本文为Boyd Wang原创文章,转载时请注明作者及本文链接
本文链接:http://www.boydwang.com/2014/01/sqlite3-recno-autoincrement-column-and-top-syntax/

最近在尝试使用SQLite3做项目,SQLite3是一个轻量级的集成式数据库,不需要数据库引擎,小巧,灵活,对于小项目来说非常合适,不用客户去安装繁重的SQL server或者access,数据的管理也可以使用SQLite Expert这种GUI工具方便的进行数据的增删改查建表操作,而这些最大的好处就是它们都是免费的(SQLite Expert Personal版是免费的,专业版要收费,不过对于一般用户已经足够了)。

先来看一下如何声明一个自增列:

Index就是自增列。

今天在查询这个Index时遇到了问题,我使用

的时候一直提示语法错误,我就纳闷了,在

里明明看到有这一列,为什么我单独select的时候会报语法错误呢?在网上搜索了一下,找不到是因为当你的表中有integer primary key,这个列被sqlite当成了rowid,如果要访问这个列,你可以使用如下几个特殊字段:

如果你的表里没有设置integer primary key,那么会有一个默认的字段叫做RecNo表明当前的rowid,这个值是sqlite内部的,不能通过外部直接访问,但是你同样可以使用上面那三个字段来得到这个值。 像这样:

再来说说top语法,SQLite不支持top语法,但是可以使用limit语法实现,limit的语法是

其中offset是可选参数,代表了从结果集第一条开始的偏移量,假如你需要第二条以后的结果(包括第二条),这里就是offset=2-1=1,如果是第三条往后(包括第三条)就是offset=3-1=2,upperbound代表了你一共要取几条数据,下面的例子展示了获取最新一条数据:

下面的例子展示了如何取得第3到11条数据,第三条的偏移量是3-1=2,一共要取11-3+1=9条数据,因此limit的参数是2,9:

参考链接:http://www.sqlite.org/lang_createtable.html#rowid
http://www.sqlite.org/lang_select.html#orderby



打赏
Categories: C/C++

Boyd Wang

想给自己贴上各种NB的头衔,NB程序员,NB自由职业者,最后发现自己其实是个Newbie,没办法,慢慢来吧

Leave a Reply

Your email address will not be published. Required fields are marked *

无觅相关文章插件,快速提升流量