一、简介
iOS中的数据存储方式:
- Plist(NSArray\NSDictionary)
- Preference(偏好设置\NSUserDefaults)
- NSCoding(NSKeyedArchiver\NSkeyedUnarchiver)
- SQLite3
- Core Data
其他保存数据的方式如 Plist,归档,偏好设置 有一定的弊端:
- 不能操作大量的数据: 因为上面几种方式都是以覆盖的方式写入的,如果想要添加新数据,则得先读取旧数据到内存中.
- 不方便查询
SQLite 数据库作用: 离线缓存数据
优势:SQLite 是一个轻量级(嵌入式)的数据库,跨平台,体积小,功能强大.
二、Navicat Premium 的 SQLite 使用:
n Navicat是一款著名的数据库管理软件,支持大部分主流数据库(包括SQLite)
1、前期准备:
(1) 创建一个数据库:
点击:
在弹出的窗口中:
即可生成对新数据库的连接
2、使用SQL语句
什么是SQL?
- SQL(structured query language):结构化查询语言
- SQL是一种对关系型数据库中的数据进行定义和操作的语言
- SQL语言简洁,语法简单,好学好用
什么是SQL语句?
- 使用SQL语言编写出来的句子\代码,就是SQL语句
- 在程序运行过程中,要想操作(增删改查,CRUD)数据库中的数据,必须使用SQL语句
SQL语句的特点
- 不区分大小写(比如数据库认为user和UsEr是一样的)
- 每条语句都必须以分号 ; 结尾
SQL中的常用关键字有
n select、insert、update、delete、from、create、where、desc、order、by、group、table、alter、view、index等等
数据库中不可以使用关键字来命名表、字段
删除数据:
(3)条件语句
如果只想更新或者删除某些固定的记录,那就必须在DML语句后加上一些条件
条件语句的常见格式
- where 字段 = 某个值 ; // 不能用两个 =
- where 字段 is 某个值 ; // is 相当于 =
- where 字段 != 某个值 ;
- where 字段 is not 某个值 ; // is not 相当于 !=
- where 字段 > 某个值 ;
- where 字段1 = 某个值 and 字段2 > 某个值 ; // and相当于C语言中的 &&
- where 字段1 = 某个值 or 字段2 = 某个值 ; // or 相当于C语言中的 ||
SQLite的 where 用于指定从一个表或多个表中获取数据的条件。
如果满足给定的条件,即为真(true)时,则从表中返回特定的值。可以 where 来过滤记录,只获取需要的记录。
where 不仅可以用于 update, delete, 也可以用于后面的 select,等等
如:将 t_student 表中年龄大于20并且姓名不等于Jack的记录,年龄都改为15:
update t_student set age = 15 where age > 20 and name != 'Jack';
删除 t_student 表中年龄大于20或者小于等于15的记录
delete from t_student where age > 20 or age <= 15;
(4) DQL
准备工作:
先用Xcode生成一个test.sql文件:
再在Navicat 中选择”Connection” –> “Execute SQL File…”
在弹框中选择刚生成的sql文件,并start,
计算记录的数量
分页:
(注:select * from t_student limit 5 ; 等效于select * from t_student limit 0, 5 ;)
(4)约束:
简单约束:
建表时可以给特定的字段设置一些约束条件,常见的约束有
not null :规定字段的值不能为null
unique :规定字段的值必须唯一
default :指定字段的默认值
主键约束:
什么是主键
主键(Primary Key,简称PK)用来唯一地标识某一条记录
例如t_student可以将id字段作为主键,相当于人的身份证
主键约束是指,每张表都必须有一个主键,用来标识记录的唯一性
主键的设计原则:主键应当是对用户没有意义的;永远也不要更新主键;主键不应包含动态变化的数据;主键应当由计算机自动生成。
使用:在创表的时候用primary key声明一个主键,
只要声明为primary key,就说明是一个主键字段,主键字段默认就包含了not null 和 unique 两个约束.
如果想要让主键自动增长(必须是integer类型),应该增加autoincrement
外键约束:
利用外键约束可以用来建立表与表之间的联系
外键的一般情况是:一张表的某个字段,引用着另一张表的主键字段
create table t_student (id integer primary key autoincrement, name text not null unique, university integer not null default 1, major_id integer, constraint fk_student_major foreign key (major_id) references t_majors (id));
表示:id 是t_student 表的主键,可以自动增长;name 字段不能为null,并且唯一; university 字段不为null,并默认为1; 表中有一个叫做 fk_student_major 的外键,作用是用t_student表中的major_id 字段引用了 t_majors 表的 id 字段。
即可生成表:
右击生成的表格,选Design Table可以看到t_student的字段的约束:
(5)表连接查询:需要联合多张表才能查到想要的数据。
例子:
select s.name stuName, m.name majName from t_student s, t_majors m where s.major_id = m.id and m.name = ‘CS’ limit 50, 10;
表示
从t_student表(别名为s)查询name字段(别名为stuName),t_majors表(别名为m)中查询name字段(别名为majName),查询条件是s表的major_id字段等于m表中id字段,并且m表中的name字段为‘CS’,查询结果显示第51~60条。