基本介绍
iOS数据库使用的是SQLite,一款轻型的嵌入式关系数据库。
安卓和iOS开发使用的都是SQLite数据库。
它的特点:
它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
它的处理速度比MySQL、PostgreSQL这两款著名的数据库都还快。
它是C语言框架的,跨平台性强。
主流三方库
iOS SDK很早就支持了SQLite,在使用时,只需要加入 libsqlite3.dylib 依赖以及引入 sqlite3.h 头文件即可。但是,原生的SQLite API在使用上相当不友好,在使用时,非常不便,因此,一些三方库就应运而生,下面我就例举几个我经常使用的三方库。
首先是FMDB,如果想学习FMDB的使用请 参考github链接
以及在FMDB上再次封装的BGFMDB 参考github链接 和LKDBHelper 参考github链接
以上三种数据库各有千秋,基本上不是太复杂的数据存储都能满足。
数据库使用语句
前端用到最多的还是查询语句,增、删、改一般都是很基本的,如果使用上面的三方库,则更简单,sql语句都不用使用。当然一些简单的查询用上面三方库也不需要sql语句。下面就整理下自己在项目中用到的查询语句
-
查询班里叫张三的学生
select * from table where name = '张三' -
查询班里语文成绩最高的学生
select max(chinese) chineseN, * from table
如果查询最低将max换成min即可 -
如果语文成绩最高的人不止一个,要查询成绩最高的那一群人
select * from table where chinese = (select max(chinese) from table) -
相邻查询,查询工号跟你最接近的人(你的工号99)
select * from table where job in (select max(job) from table where job < 99 union select min(job) from table where job > 99) -
分组查询,查询每个分数段有多少人
select count(*) num, * from table group by scores -
排序,根据总成绩排序
select * from table order by scores
默认正序(asc),如果倒序后面加上desc -
分组排序查询,查询每个分数段有多少人并根据总分排序
select count(*) num, * from table group by scores order by scores -
分组最高查询,查询每个分数段有多少人,并找出每个分数段语文最高成绩
select count(*) num, max(chinese) chinese, * from table group by scores -
连表查询
select tableA .* , tableB.* from tableA inner join tableB on tableA.id = tableB.id -
左连接表查询(左边这个表数据全部显示)
select tableA .* , tableB.* from tableA left outer join tableB on tableA.id = tableB.id
SQLite3不支持右连接和全连接 -
派生查询
将条件拆开查询,比喻查询名称叫张三的男生,可以先查询出所有男生,形成一张临时表,然后再在里面查询名称叫张三的
select * from (select * from table where sex = '男') where name = '张三'
先排序再分组(查询最新标题一样版本最新的数据)
如果使用select * from table order by version group by title 这个语句则会报错,现在就可以使用派生查询
select * from (select * from table order by version) group by title
写这篇文章主要是加深自己的记忆,如果能给大家提供帮助那就更好了,我也会定期更新自己遇见过的数据语句
网友评论