iOS开发篇(七)SQLite使用与介绍

1. 首先简单说一下iOS中数据存储的几种基本方式:

  • plist:用来存储基本类型(NSString、NSArray、NSDictionary)等;
  • NSUserDefaults:用来进行一些Preference(偏好设置),其中包括用户名、用户密码、自动登录等;
  • NSCoding:归档(NSKeyedArchiver)、截档(NSKeyedUnarchiver);
  • SQLite、CoreData(用面向对象的思想封装了SQLite语句)。
2. 数据库的两大类:
  • 关系型数据库(主流)
  • 对象型数据库
3. SQLite数据库主要进行增删改查操作

SQLite常用的关键字有:select、update、create、delete、insert、where、as、drop、order、by、group、from等。

4. SQLite语句分为三大类

  • DDL语句:数据定义语句

创建表:create table if not exists 表明(主键,字段名 字段类型,.....);
删   表:drop table if exists 表名

  • DML语句:数据操作语句
增:insert into 表名(字段1,字段2,...) values(字段1的值,字段2的值,...);
改:update 表名  set  字段1 = 字段1的值, 字段2 = 字段2的值, ...;
删:delete  from 表名
查:select 字段or“*”  from   表名
  • DQL语句:数据查询语句(有条件约束进行增删改查操作)
5. 主键
主键是一张表中唯一的一个字段,且保证每一条记录的数据主键都是唯一的(不相同)
SQLite语句设置主键:
create table if not exists 表名 (字段名  字段类型    primary key antoincremant  , 字段名1 字段类型1,......) ;

6. 别名(字段和表都可以起别名)

格式:select   字段名1   别名1  ,字段名2   别名2    from    表名  别名;

select   字段名1   as  别名1  ,字段名2  as  别名2    from    表名  as  别名;

select  别名.字段名1  ,别名.字段名2   from   表名   别名;


7. 数据库个数查询(计算某一条件下的数据个数)

f() = count(字段名)


8. 数据库排序(以某一字段为条件进行排序)

格式:  select   *  from    表名    where   字段名   条件    order  by    字段名    asc(升序)or  desc(降序)

eg:    select  *  from   t_student   where   score >=  60  order by   score   asc;  (按升序排列学生及格成绩)

  

9. limit(限制)

作用:可以精确的控制查询结果的数量,可以进行分页

格式:select  *   from  表名  limit  数值1, 数值2 ;

eg:   select  *   from  t_student  limit  4, 8;

可以理解为:跳过前四条数据,查询后8条数据

分析1:要求每页仅仅显示5条数据

第一页:limit  0,5;

第二页:limit  5,5;

第三页:limit 10,5;

.......

第n页:limit  (n-1)*5, 5;


分析2:select  *   from  t_student   limit   7;

相当于:select  *   from  t_student  limit  0,7;

表示最前面7条数据


10. 约束

(1)简单约束:建表时可以给一些字段设置约束条件,常见的约束有

not  null:规定字段的值不能为空

unique:规定字段的值必须唯一

default:规定字段的默认值

(2)主键:

上文有介绍,这里不介绍了


(3)外键约束:意指当前表的某一字段通过另一张表的主键字段进行约束(通常情况下)

        外键约束的作用:可以建立表与表之间的联系

格式:create  table  if  not  exists  表名  ( id  integer  primary  key  autoincrement,  字段名   字段类型,  constraint  约束名  foreign  key  约束字段  references  引用表(字段名) )

eg:create table if not exists t_class ( id  integer primary key  antoincremant ,   class_name  text);

       create  table  if  not exists  t_student (id  integer primary key  auto increment,  student_name  text,  class_id  integer,  constraint  fk_t_student_class_id_t_class_id  foreign key  class_id  references  t_class(id));


11. 表链接查询

表链接查询指的是表的个数至少大于两个,进行表链接之间的查询


根据10中例子   查询班级名字为冲刺班学生的所有名字

方法一:表链接查询

select  s.student_name  from   t_class c ,  t_student s  where  c.id = s.class_id  and   c.class_name = '冲刺班'   ;

方法二:嵌套查询

select  s.student_name  from  t_student  s  where  s.class_id =  (select  c.id  from   t_class c   where  c.class_name = '冲刺班');


内连接:显示两张表都有的数据;

格式:select  *  from   t_class  c  inner  join   t_student  s  on   c.id  =  s.class_id;

外链接:只能保证左边数据的完整

格式:select  *   from  t_class  c  left  outer  join   t_student  on  c.id = s.class_id;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值