SQLite3使用小贴士

前端之家收集整理的这篇文章主要介绍了SQLite3使用小贴士前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、sqlite3 中limit、offset使用说明
假设表列值为 0,1...9(假设由select * from <table_name>获得);
LIMIT 子句限定行数的最大值。负的 LIMIT 表示无上限。后跟可选的 OFFSET 说明跳过结果集中的前多少行。在一个复合查询中, LIMIT子句只允许出现在最终 SELECT 语句中。限定对于所有的查询均适用,而不仅仅是添加了 LIMIT 子句的那一行。注意 OFFSET 关键字用于LIMIT 子句中,则限制值是第一个数字,而偏移量(offset)是第二个数字。若用逗号替代 OFFSET 关键字,则偏移量是第一个数字而限制值是第二个数字。


1. select <列名/ *> from <table_name> limit 6【limit :限制值】
结果: 0,1...5; (前 6 条数据)


2. select <列名/ *> from <table_name> limit 6 offset 2 【limit :限制值 ;offset :偏移量】
结果: 2,3...7; (从 0 开始偏移 2 个后的 6 条数据)


3. select <table_name> limit 2,6 【偏移量,限制值】
结果:同 2


4. delete from <table_name> where rowid in(select rowid from <table_name> limit 1 offset 4)
结果:删除第五行

limit 1:删除 1 行
offset 4:偏移 4 行


二、sqlite3中去掉多余的重复记录
5. select distinct <table_name>
说明:加上关键字distinct会去掉多余的重复记录


三、排序

1. 升序:
select <列名/ *> from<table_name> order by <列名/ *>

2.降序:
select<table_name> order by<列名/*> DESC


四、在使用API:sqlite3_get_table获取数据时,记得对应用sqlite3_free_table函数释放占用的内存,因为sqlite3_get_table包含malloc函数申请内存的处理,如若不用sqlite3_free_table会内存泄露。同样对pzErrmsg也要用sqlite3_free释放内存。


int sqlite3_get_table(
sqlite3 *db,/* An open database */
const char *zsql,/* sql to be evaluated */
char ***pazResult,/* Results of the query */
int *pnRow,/* Number of result rows written here */
int *pnColumn,/* Number of result columns written here */
char **pzErrmsg /* Error msg written here */
);
void sqlite3_free_table(char **result);


注:更多直接浏览Sqlite3官网

猜你在找的Sqlite相关文章