ios中常见数据存储方式以及SQLite常用的语句
在iOS中,根据不同的需求对应的有多种数据存储方式:
1.NSUserdefaults 将数据存储到沙盒中(library),方便易用,但是只能存储系统提供的数据类型(plist),不能存储自定义的model。
2,NSKeyedArchiver/NSKeyedArchiver归档,解归档/序列化,解序列化,同样将数据存储到沙盒中,由于是将数据进行序列化存储,所以,归档支持存储自定义的model(遵守NSCoding协议,实现协议方法),由于过程相对复杂,而且不能方便的增加删减内容,所以多用于存储安全性要求高,比较稳定、成熟的数据。
3,Core Data 苹果官方给出的数据存储方式,有待研究。
4.SQLite,轻量级的数据库。可移植性强(可以跨平台使用),管理操作简便。使用第三方fmdb,管理数据轻松加愉快。
以下是SQLite的常用的语句:
《1》创建表格 需要判断表格是否存在,如果不存在,才创建新的
createtableifnotexists student(
num integer primary key autoincrementnotnull,
name varchar(100) notnull,
sex booleannotnull,
birth date,
tel text
)
《2》插入数据 insert into (除了数字以外,其他的都需要加单引号)
insert into student(name,sex,birth,tel) values ('jack', 'true', '2010-2-2','13123456787')
创建表格时指定不能为空的字段在插入时必须有值,可为空的可以缺省
insert into student(name,sex,birth) values ('ios', 'false', '2010-1-2')
《3》查找
查找全部
select * from student
查找部分值
select name from student
select name,sex from student
查找 加条件, 用 where
select * from student where num=3
查找 ,多个条件用and
select num,name from student where num>=3 and num<=6
查找,条件有范围用between
select num,name from student where num between 3 and 6
查找 条件是字符串
select * from student where name='apple'
值用 单引号、双引号都可以
select * from student where name="jack"
查找 条件是字符串 like
select * from student where name like 'jack'
查找以 某个字符串开头的值 (%代表任意长度,因此使用时效率比较低,建议放在后面,不要放到前面)
select * from student where name like 'j%'
查找以 某个字符串结束的值
select * from student where name like '%k'
查找 _代表任意的一个字符
select * from student where name like '_a%'
多个条件用and
select * from student where name like '_a%' and num=3
查找 根据某个字段的升序(asc)进行排序
select * from student order by num asc
查找 根据某个字段的降序(desc)进行排序
select * from student order by name desc
查找 根据多个条件依次排序
select * from student order by birth asc, num desc
count(*) 聚合函数, group by 根据什么分组
select count(*) from student group by birth
分组的条件,和分组后每个组的个数。
group by 只能显示每个分组的个数(聚合函数)、或者分组的条件
select birth,count(*) from student group by birth
order by排序一定放在后面
select birth,count(*) from student group by birth order by count(*) desc
在表中找出学号>2的根据生日进行分组,然后根据分组后的个数降序显示每个生日的个数
select birth,count(*) from student where num>2 group by birth order by count(*) desc
as进行重命名, 将count(*) 改为 count_1
select birth,count(*) as count_1 from student where num>2 group by birth order by count_1 desc
as进行重命名
select num as t_num , name from student where t_num>3
子查询条件用having。 班里学号大于2的学生根据生日进行分组,显示分组之后个数大于等于2个人的分组的生日和个数,根据个数降序排列显示
select birth,count(*) as count_1 from student where num>2 group by birth having count_1>=2 order by count_1 desc
执行顺序:where —> select —> 执行group by —> 执行聚合函数count(*) —> having,二次筛选 —> order by 排序
查找注意事项:
1. select 后面 * 慎用,用什么查什么,提高效率
2. where后面尽量选择用主键筛选 (索引相当于目录,数据库建主键后自动建索引,所以查主键,效率会高,查询速度快,优化查询。索引类似二叉数。索引缺点一二,如果多了或者少了,不仅要改数据,还要改索引,即增删改会变慢,查询速度快,缺点三多占存储空间)
《4》删除数据 delete from where, 如果没有删除的条件,会将表格中所有的数据都删除掉
delete from student where num>4
《5》修改数据 ,更新数据 update
update student set name='rose21' where name like 'rose'
更新多个字段 ,注意:主键不允许更新为已经存在的值,要保证主键的值唯一
update student set name='happy' , birth='2010-11-11' where num=2
《6》删除表格,销毁表格
drop table student
《6》表连接查询
创建学生表格
createtable ifnotexists jrstudent(
num integer primary key autoincrementnotnull,
name varchar(100) notnull,
age integer,
classNum integer notnull
)
创建班级表格
createtable ifnotexists jrclass(
c_num integer primary keynotnull,
c_name varchar(100) notnull
)
插入学生数据
insertinto jrstudent(name, classNum,age) values ('apple', 1, 21)
insertinto jrstudent(name, classNum,age) values ('rose', 1, 20)
insertinto jrstudent(name, classNum,age) values ('jack', 2, 21)
插入班级数据
insertinto jrclass(c_num, c_name) values (1, 'java')
insertinto jrclass(c_num, c_name) values (2, 'ios')
表连接查询 inner join on 内连接
select * from jrstudent innerjoin jrclass on jrstudent.classNum=jrclass.c_num
表连接查询 简化操作,为表取别名
select * from jrstudent s innerjoin jrclass c on s.classNum=c.c_num
显示部分信息
select s.num,s.name,c.c_name from jrstudent s innerjoin jrclass c on s.classNum=c.c_num
显示部分信息
select s.num,s.name,c.* from jrstudent s innerjoin jrclass c on s.classNum=c.c_num
当两个表连接之后,如果字段名(列名)唯一时,可以直接写列名
select name,c_name from jrstudent s innerjoin jrclass c on s.classNum=c.c_num where age>20
ios中常见数据存储方式以及SQLite常用的语句的更多相关文章
- IOS中的数据存储方式,特点,使用情况
数据存储的核心都是写文件,主要有四种持久化方式:属性列表(Plist),对象序列化,SQLite数据库,CoreData. 存储Plist: 键值进行存储,不能存储对象.对象需要序列化编码才能写入文件 ...
- iOS中的数据存储方式_SQLite3
优点: 1) SQLite是一款轻型的嵌入式数据库; 2) 它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 3) 它的处理速度比Mysql.PostgreSQL这两款著名的数据库都还 ...
- iOS中的数据存储方式_Preference(NSUserDefaults)
NSUserDefaults适合存储轻量级的本地数据,项目中,我会把一些简单的数据密码.网址.登陆状态BOOL.整型/浮点型数据等和用户有关的数据用它存储.但是它不能存储自定义的对象! 实例化一个 N ...
- iOS中的数据存储方式_Plist
plist文件只能存储OC常用数据类型(NSString.NSDictionary.NSArray.NSData.NSNumber等类型)而不能直接存储自定义模型对象; 我们拿NSData举例: /* ...
- iOS中的数据持久化方式
iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data. 1.属性列表 涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults ...
- 怎样实现IOS开发中的数据存储方式
iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...
- 安卓中的数据存储方式以及ContentProvider的简单介绍
1.介绍android的数据存储方式 File存储 sharedPrefrence存储方式 conmtentprovider sqlitedatabase 网络存储 2.请介绍下ContentPr ...
- iOS中的数据存储
SQLite3 SQLite3是一款开源的嵌入式关系型数据库,可移植性好,易使用,内存开销小. SQLite3是无类型的,意味着你可以保存任何类型的数据到任意表的任意字段中. SQLite3常用的4种 ...
- iOS开发_数据存储方式
对于数据持久化的问题,博主并不准备在博文内放很多的代码进行更深一步解释,只是简单的介绍一下四种数据持久化,如有时间,会另外针对各个数据持久化的方法进行更进一步的阐述. 直接进入主题: 〈1.NSUse ...
随机推荐
- Arcgis 几何网络分析
ArcGIS:网络分析(转) 由于之前对网络分析的理解有很多问题,所以在网上找了一些资料,这是其中一篇我觉得比较好的,所以就整理了一下,发到网上来,留个底吧,呵呵 注:关于几何网络的建立见前面的& ...
- Bootstrap基本类和组件学习二
一.联系方式:(自带鼠标的移动动画) 1.头文件CSS <link rel="shortcut icon" href="favicon.ico"> ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 本文将使用一个开源框架CacheCow来实现针对Http请求资源缓存,本文主要介绍服务器端的 ...
- Python 系列:1 - Tuples and Sequences
5.3 Tuples and Sequences We saw that lists and strings have many common properties, e.g., indexing a ...
- SPL--Serializable
Serializable[自定义序列化的接口] : 实现此接口的类将不再支持 __sleep() 和 __wakeup(). 作用: 为一些高级的序列化场景提供支持.__sleep()和__wakeu ...
- [Unity] 2D开发学习教程
豆子先生,据说是官方的一个Demo, 在蛮牛网上有大部分代码的视频讲解. 这个是我学习过程中边看教程边写出来的,功能和原版基本一样,增加了手游的操控. Blog: http://www.cnblogs ...
- centos 7.0 ssh 登陆
CentOS 7.0 最小化安装 默认连接 默认端口是22 安装完查看IP 命令 ip addr ip: 192.168.1.103 自己家里练习的机子 都没改配置了 使用putty 远程连接 下载页 ...
- 常用JS效果 不断进步贴 不停更新~ 纪念用~
常用效果 JS 都是Jquery 没有特殊说明 1.选项卡 用的JQuery 以后学好点再来对比 看下 /* * @parent 最外层父级元素 * @EventElement 触发事件元素 ...
- .net3.5后新增的 BeginInvoke EndInvoke 异步操作
protected void Main() { //首先定义一个方法的封装..后边的LongTimeMethod是被封装的方法.. Func<int> longTimeAction = n ...
- WKWebView使用及注意点
iOS8之后,苹果推出了WebKit这个框架,用来替换原有的UIWebView,新的控件优点多多,不一一叙述.由于一直在适配iOS7,就没有去替换,现在仍掉了iOS7,以为很简单的就替换过来了,然而在 ...