码迷,mamicode.com
首页 > 移动开发 > 详细

IOS SQLLite操作(一)

时间:2014-12-16 16:43:38      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:des   style   ar   io   color   os   sp   on   文件   

iOS应用数据存取的常用方式

•XML属性列表 —— PList
•NSKeyedArchiver 归档
•Preference(偏好设置)
SQLite3
•Core Data
 

DDL语句

•创表
CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2, …);
CREATE TABLE if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, …);
create table t_person (id integer, name text, age inetger);
 
•删表
drop table 表名;
drop table t_person;
 

字段类型

•SQLite将数据值的存储划分为以下几种存储类型:
•NULL: 表示该值为NULL值
•INTEGER: 无符号整型值
•REAL: 浮点值
•TEXT: 文本字符串
•BLOB: 二进制数据(比如文件)
 
•实际上SQLite是无类型的,建表时声明或不声明类型都可以,也就意味着创表语句可以这么写:
create table t_student(name, age);
 
•注意:为了保持良好的编程规范,方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型
 
 

DML语句

•插入数据(insert)
insert into 表名(字段1, 字段2, …) values(字段1的值, 字段2的值, …);
insert into t_person(name, age) values(‘mj’, 10);
•注意:数据库中的字符串内容应该用单引号’括住
 
•更新数据(update)
update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值, … ;
update t_person set name = ‘jack’, age = 20;
•注意:这里会将t_person表中所有记录的name都改为jack,age都改为20
 
•删除数据(delete)
delete from 表名;
delete from t_person;
•注意:这里会将t_person表中所有记录都删掉
 
 

条件语句  

•如果只想更新或者删除某些固定的记录,那就必须在DML语句后加上一些条件
•条件语句的格式如下:
where 字段 = 某个值 and 字段 > 某个值;  // and相当于 &&
where 字段 = 某个值 or 字段 = 某个值;   // or相当于 ||
 
•实例
•将年龄大于10并且姓名不等于jack的记录年龄都改为5
update t_person set age = 5 where age > 10 and name != ‘jack’;
•删除年龄小于等于10或者年龄大于30的记录
delete from t_person where age <= 10 or age > 30;
 

DQL语句

•DQL语句就是查询语句,格式如下:
select 字段1, 字段2, … from 表名;
select name, age from t_peron;
 
•如果想查询所有的字段可以用:
select * from 表名;
select * from t_person;
 
•也可以添加条件语句
select * from t_person where age > 10;
 
•计算记录的数量可以用count(字段)或者count(*)
select count(*) from t_person;
select count(age) from t_person where height < 1.66;
 

排序

•查询出来的结果可以用order by进行排序
select * from t_person order by 字段;
select * from t_person order by age;
 
•默认是按照升序排序(由小到大),也可以变为降序(由大到小)
select * from t_person order by age desc; // 降序
select * from t_person order by age asc;  // 升序(默认)
 
•也可以用多个字段进行排序
select * from t_person order by age asc,height desc;
先按照年龄排序(升序),年龄相等就按照身高排序(降序)
 

限制查询数量

select * from 表名 limit 数值1, 数值2;
select * from t_person limit 4, 8;
•上面的语句,可以这么理解:
•跳过最前面4条语句,然后取8条记录
 
•limit常用来做分页查询,比如每页固定显示6条数据,那么每一页应该这样取数据:
第1页:limit 0, 6
第2页:limit 6, 6
第3页:limit 12, 6
第n页:limit 6*(n-1), 6
 
select * from t_person limit 7;
•表示取最前面的7条记录
 

简单约束

•建表的时候可以给特定的字段 设置 一些约束条件
1:用not null指定字段的值不能为null
2:用unique指定字段的值必须唯一
3:用default指定字段的默认值
 
CREATE TABLE t_student (id integer, name text NOT NULL UNIQUE, age integer NOT NULL DEFAULT 1);
1:name字段不能为NULL,并且唯一
2:age字段不能为NULL,并且默认为1
 

主键约束(PK)

•当t_person中有些记录的name属性和age属性都一样时,那么就没法区分这些数据,造成数据库的记录不唯一,这样就不方便管理数据
•良好的数据库编程规范应该是要保证每条记录的唯一性,为此,增加了主键约束
 
•主键是用来唯一地标识某一条记录的,可以是一个字段或多个字段
•比如t_person可以增加一个id字段作为主键,相当于人的身份证
 
•主键的设计原则:
1:主键应当是对用户没有意义的
2:永远也不要更新主键
3:主键不应包含动态变化的数据
4:主键应当由计算机自动生成
 
•在创表的时候用primary key声明一个主键
CREATE TABLE t_student (id integer PRIMARY KEY,name text,age integer);
 
•只要声明为primary key,就说明是一个主键字段,主键字段默认就包含了not null 和 unique 两个约束
 
•如果想要让主键自动增长(integer类型),应该增加autoincrement
CREATE TABLE t_student (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer);
 

外键约束(FK)

•外键约束可以用来建立表与表之间的联系
•新建一个外键
CREATE TABLE t_student (id integer PRIMARY KEY AUTOINCREMENT,name text,age integer,book_id integer REFERENCES t_book(id));
 
t_student表中有一个外键book_id引用着t_book的主键id
 
 
 
 
 

IOS SQLLite操作(一)

标签:des   style   ar   io   color   os   sp   on   文件   

原文地址:http://www.cnblogs.com/Rmeo/p/4167100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!