iOS的数据存储方式 :
1.Plist (例:NSArray\NSDictionary\NSData)
2.Preference(偏好设置\NSUserDefaults) (系统自带)
3.NSCodeing(NSKeyedArchiver\NSkeyedUnarchiver ) (归档\解档)
4.SQLite3
5.Core Data (iOS5之后才出现的一个框架它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。
一、 SQLite的简介:
是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
二、 什么是数据库?
- 数据库(Database) 是按照数据结构来组织、存储和管理数据的仓库.
- 数据库可以分为两大种类
- 关系型数据库
- 对象型数据
-
● 格式
-
● select 字段1, 字段2, ... from 表名 ;
-
● select *from 表名; // 查询所有的字段
-
● ⽰例
-
● select name, age from t_student ;
-
● select * from t_student ;
-
● select * from t_student where age > 10 ; // 条件查询
-
● 格式
-
● select count (字段) from 表名 ;
-
● select count(*)from表名;
-
● ⽰示例
-
● select count (age) from t_student ;
-
● select count ( * ) from t_student where score >= 60;
-
● 查询出来的结果可以⽤用order by进⾏行排序
-
● select * from t_student order by 字段 ;
• select * from t_student order by age ;
-
● 默认是按照升序排序(由⼩小到⼤大),也可以变为降序(由⼤大到⼩小)
-
● select * from t_student order by age desc ; //降序
-
● select * from t_student order by age asc ; // 升序(默认)
-
● 也可以⽤用多个字段进⾏行排序
-
● select * from t_student order by age asc, height desc ;
• 先按照年龄排序(升序),年龄相等就按照⾝身⾼高排序(降序)
-
● 使⽤用limit可以精确地控制查询结果的数量,⽐比如每次只查询10条数据
-
● 格式
-
● select * from 表名 limit 数值1, 数值2 ;
-
● ⽰示例
-
● select * from t_student limit 4, 8 ;
• 可以理解为:跳过最前⾯面4条语句,然后取8条记录
-
● 建表时可以给特定的字段设置⼀一些约束条件,常见的约束有
-
● not null :规定字段的值不能为null
-
● unique :规定字段的值必须唯⼀一
-
● default :指定字段的默认值(建议:尽量给字段设定严格的约束,以保证数据的规范性)
● 示例
● create table t_student (id integer, name text not null unique, age integer not null default1) ;
• name字段不能为null,并且唯⼀一
• age字段不能为null,并且默认为1
-
● 如果t_student表中就name和age两个字段,⽽而且有些记录的name和age字段的值都⼀一样时,那么就没法区分这些数据,造成数据库的记录不唯⼀一,这样就不⽅方便管理数据
-
● 良好的数据库编程规范应该要保证每条记录的唯⼀一性,为此,增加了主键约束
-
● 也就是说,每张表都必须有⼀一个主键,⽤用来标识记录的唯⼀一性
-
● 什么是主键
-
● 主键(Primary Key,简称PK)⽤用来唯⼀一地标识某⼀一条记录
-
● 例如t_student可以增加⼀一个id字段作为主键,相当于⼈人的⾝身份证
-
● 主键可以是⼀一个字段或多个字段
● 主键应当是对⽤用户没有意义的
● 永远也不要更新主键
● 主键不应包含动态变化的数据
● 主键应当由计算机⾃自动⽣生成
-
● 在创表的时候⽤用primary key声明⼀一个主键
-
● create table t_student (id integer primary key, name text, age integer) ;
-
● integer类型的id作为t_student表的主键
-
● 主键字段
-
● 只要声明为primary key,就说明是⼀一个主键字段
-
● 主键字段默认就包含了not null 和 unique 两个约束
-
● 如果想要让主键⾃自动增长(必须是integer类型),应该增加autoincrement
-
● create table t_student (id integer primary key autoincrement, name text, ageinteger)
● 利⽤用外键约束可以⽤用来建⽴立表与表之间的联系
外键的⼀一般情况是:⼀一张表的某个字段,引⽤用着另⼀一张表的主键字段
● 新建⼀一个外键
● create table t_student (idinteger primary key autoincrement, name text, age integer,class_id integer, constraint fk_t_student_class_id_t_class_idforeign key (class_id)(id)) ; references t_class
● t_student表中有⼀一个叫做fk_t_student_class_id_t_class_id的外键
这个外键的作⽤用是⽤用t_student表中的class_id字段引⽤用t_class表的id字段