iOS中进行数据持久化存储有几种方式
- plist(NSArray NSDictionary只用来存储数组和字典,并且数组和字典中不能有自定义对象,有自定义对象)
- preference偏好设置也不能存储自定义对象
- nscoding归档:用来存储自定义对象.局限性:一次性做存储/读取操作.------------------而离线缓存是有时是一次一次增加,如果用归档,就需要,从数组中读取出来加入数组,再重新存入.不能单独添加某一个东西.必须一次性添加进去.
比如有
80条数据,需要再增加20条,我们就需要取出放入数组,再一次性存入100条 - Sqlite数据库就是用来做离线缓存的
做离线缓存,目的是为了在没有网络时,可以进行加载数据
1.什么是SQLite,
SQLite是一款轻型的嵌入式数据库,占用资源非常低,在嵌入式的设备中,可能只需要几百k的内存就够了.她的处理速度比Mysql postgreSQL这两款数据库都快.Mysql postgreSQL这两种是大型数据库.我们手机不需要用到这种大型数据库.
2.什么数据库
是用来存储和管理数据的仓库
3.数据库的两大分类
关系型数据库
对象性数据库coredata
4.sqlited数据库的优点
- 操作数据比较快,读取比较方便
- 可以局部读取
- 比较小型,占用内存小符合手机的特点≈
5.sqlited数据库是如何存取数据的
数据库和excel类似,是以表为单位的.表的名字
6.操作数据的步骤
- 创建数据库表,表名通常以t_开头,比如t_student
- 设计表,根据表需要存储什么数据,比如,学生有学号 姓名 年龄等等
- 记录数据 设置学生 12号 张明 15岁
- 插入其他数据,13号 李敏 15岁;这种每一条信息叫一条记录每一列叫一个字段
- 主键,数据库中每一条数据的唯一标识,一般每个表只用一个主键
- 数据类型
Integer(整形)
real 浮点型 text(文本)
blob(二进制数据比如文件,NSDate本身就是二进制) 无类型
7.什么是SQL?
结构化查询语言是一种对关系型数据库中的数据进行定义和操作的语言
SQL语句是使用SQL语言编写出来的句子/代码
在程序运行期间,要想操作数据库中的数据(增删改查),必须使用SQL语句
8.SQL语句的规则
- 不区分大小写
- 每条语句都必须以;分号结尾
- 不能以关键字来命名表/字段
9.SQL语句的种类
- 数据定义语句DDL(data definition language)
create table drop table在数据库中创建新表或删除表
- 数据库操作语句DML(data manipulation language)
insert update delete 在数据库中对表进行插入添加.修改.删除表中的数据 - 数据查询语句DQL(data query language)
select where orderly groupie having用于查询表中数据
10.DDL数据创建语句
创建表格
- create table 表名(字段1,字段类型1,字段2,字段类型2.....)
- create table if not exists 表名 (字段1 字段类型1,字段2 字段类型2)
- create table if not exists stu(s_id integer primary key autoincrement not null)顺序不能调货,主键是整形的只有整形才能自增
删除表格
- drop table 表名
- drop table if exists 表名
11.DML数据库操作语句----增删改
数据库中的字符串内容应该用单引号’括住
插入数据
- insert into 表名(字段名1,字段名2.。。。)values(字段1值,字段2值。。。。)
- insert into stu (s_name,s_age) values ('aa',18)
id 是系统自增的
insert into mall (m_name,m_price,m_date) values ('牙膏',12.5,'20150101')
更改数据
- update 表名 set 字段名1 = 修改值1,字段名2 = 修改值2, (无条件全部更新)
条件
where 字段名 条件 条件值(<,>,!=.....)
and or 关键词:并且 或
- update stu set s_age = 9999 where s_age >10 and s_age<20
- update stu set s_age = 18 where s_age =1000 or s_age=9999
删除
delete from stu 无条件全部删除
delete from stu where s_age = 26
12.数据查询语句DQL
查找 ** select * 通配符代表所有字段**
select 字段1,字段2,。。。from 表名 where 字段名 条件 条件值
- select * from stu where s_age = 18
- select * from stu(表名)
模糊查询 所有字段全查
- select * from stu where s_name like ‘a_d’下划线代表一个字母 所有字段全查
- select * from stu where s_name like 'a_'
- select * from stu where s_name like 'a%’不确定a后面有几个字母用%
单查某个字段
- select s_name from stu
查找某几个字段用逗号隔开
- select s_name,s_age from stu
排序
- selected * from 表名 order by 字段名 升序asc/降序desc
- select * from stu order by s_age asc 按照年龄升序排列
- select * from stu where s_age > 50 order by s_age asc 年龄大于50并按照升序排列
limit 可以精确控制查询结果的数量,比如每次只查询10条数据
- select * from 表名 limit 数值1, 数值2; 跳过数值1条数据开始查找数值2条
- select * from stu limit 5; 只查前5条只跟1个数值,从头开始查多少个
- select * from stu limit 3,7; 从第4条开始查7条
- select * from stu where s_age > 50 order by s_age asc limit 3; 年龄大于50的3条,并按照升序排列
13.外键约束
利用外键约束创建表与表之间的关系
某个表的字段引用其他表的主键
t_students表->编辑->Foreign keys -> + -> fk_status_user
create table t_student(id integer primary key auto increment,name text,age integer,class_id integer,constraint fk_t_student_class_id_t_class_id foreign key(class_id) references t_class(id));
主键:唯一标识/自增/不能为空
id integer primary key auto increment 主键
name text,
age integer
class_id integer
constraint约束的意思 外键名称: fk_t_student_class_id_t_class_id
foreign key(class_id) references t_class(id)这个外键的作用是用t_student表中的class_id字段引用t_class表的id字段
14.表连接查询----需要联合多张表才能查到想要的数据
表连接的类型
内连接:inner join或者join (显示的是左右表都有完整字段值的记录)
外连接:left outer join (保证左表数据的连接性)
查询0316班的所有学生(给表替换名称,使用.语法)
select s.name,s.age from t_students s,t_class c where s.class_id = c.id and.name = “0316”;
以上均来自网上查询。