iOS开发中常用的数据存储方式主要有以下几种:
1,XML属性列表;2,Preference;3,归档;4,sqlite3;5,CoreData.
因为近期刚换公司,公司项目的数据存储主要由sqlite完成,项目主管也提前打了招呼,因为项目中的数据存储也会比较复杂,需要复习sqlite的知识.所以本文主要复习sqlite的基本操作.
一:数据库管理
test.db //创建数据库,创建表的时候才会真的创建数据库
.schema //获得数据库的Schema信息
.output file.sql ; .dump; .output stdout //导出数据
.read file.sql //用来导入.dump命令创建的文件
test2.db < file.sql //备份数据库
create table foods (id integer primary key,type_id integer,name test) //创建表
alter table foods add column email text not null default ” //修改表,添加列
二:数据库查询
过滤:
select * from foods where name = ‘egg’ and type_id = 9; //支持逻辑操作符 AND,OR,NOT,IN
select * from foods where name like ‘%egg%’; // %是贪婪匹配符
限定和排序
select * from foods order by id limit 1 offset 1 //limit限制数量,offset 指定偏移的记录数
select * from foods where name like ‘B%’ order by type_id desc, name limit 10; //desc(降序),asc(默认的升序)
函数和聚合
函数包括upper(),lower(),length(),abs()等数学函数,也包括聚合函数:sum(),avg(),count(),min(),max().
select count(*) from foods where type_id=1; //计算type_id = 1 的行的数量
分组(grouping)
select type_id from foods group by type_id;
去掉重复
select distinct type_id from foods;
多表连接,分为内连接,交叉连接,外连接(外连接又分为左连接,右连接,全外连接),以及自然连接.
select foods.name, food_types.name from foods, food_types where foods.type_id=food_types.id ;
Select * From foods inner join food_types on foods.type_id = food_types.id; //内连接
select * from foods, food_types; //交叉连接
select *from foods left outer join foods_episodes on foods.id=foods_episodes.food_id; //左外连接
子查询,子查询是指select语句中又嵌套select语句
select count(*) from foods where type_id in (select id from food_types where name=’Bakery’ or name=’Cereal’);