天天看点

SQLite数据库以及FMDB的使用SQLite数据库SQL语句FMDB使用

iOS中,使用的是SQLite数据库

但是原生SQLite用起来比较麻烦,所以FMDB对他进行了封装

通过FMDB,可以使用SQL语句进行数据库操作

SQLite数据库

1、数据库
数据库(Database/DB)是一种以数据模型组织起来并存放存储管理数据的数据仓库
(数据存到磁盘上,仍然保留原有的数据模型结构。可以直接进行选择,筛选,添加,删除等管理操作)
数据库是数据管理的高级阶段,它是由文件管理系统发展起来的。
数据库是个文件,操作对数据的增、删、改、查。由统一数据库软件来进行管理和控制。
2、众多的数据库
Access
Oracle
SQLite
DB2
Mysql
3、SQLite数据库
SQLite官网:http://www.sqlite.org
SQLite是几乎所有的手机系统(iOS,Android,Symbian,Blackberry,Lumia,Limo等)的标准数据库
SQLite数据库中的表单由行和列组成
比如“演员”数据库中,可以有男演员,女演员两个表单。表单类似数据模型,因此列,就称为数据模型的字段。每条记录就是数据模型的一个实例对象。

ID       演员            国籍

———————————————————————

1        舒淇          中国香港

2      李丽珍        中国香港

3      苍井空           日本

4      松岛枫           日本

5      奥巴马           美国

列(字段/域):ID 演员 国籍

5行数据: 一行数据组合到一起称为一条记录

【注】操作数据库,需要数据库操作软件和操作语句。

SQL语句

SQL语句通常写作(Structured Query Language),是专门操作数据库的一种语言。

【特征】

<1>所有数据在表单中进行管理

<2>数据没有顺序,至少SQL不区分顺序

<3>语句不区分大小写

<4>表单中必须有主键列,每个主键唯一

1、SQL中的数据类型
integer: 整型数据,大小为4个字节。
bigint: 整型数据,大小为8个字节。
smallint: 整型数据,大小为2个字节。
tinyint: 正整型数据,大小为1个字节。
float: 浮点数据,大小为4个字节。
double: 浮点数据,大小为8个字节。
real: 浮点数据,大小8个字节。
char(n): 非变长字符串,不超过n个字符(n < 255) //不够n,仍然存储n个字节
varchar(n): 变长字符串,不超过n个字符(n <= 4000)//最常用 存储空间,随字符串到小改变
text: 变长非unicode字符串,存储超大数据(n <= 2^31-1)
date: 日期数据,年份-月份-日期
time: 时间数据,时:分:秒
datetime: 日期时间数据,年份-月份-日期 时:分:秒
timestamp: 日期时间数据,年份-月份-日期 时:分:秒 毫秒
blob: 二进制,BOOL值
null: 空
【注】字符串和日期时间,需要加入单引号,日期必须严格按照格式,如14年6月2日,必须写作2014-06-02,不能写作14-6-2,时间也一样需要补零。
2、SQL操作
1)创建表
2)插入记录
3)更新记录
4)查询记录
5)删除记录
6)删除表
3、where语句的筛选运算符
= 或 == 或 like 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
<> 不等于
!> 不大于
!< 不小于
%舒% 包含子字符串”舒” (%:一个或多个字符)
4、基本sql语句

1. 创建表   create table [if not exists] 表名   (           属性名 类型 ( 字符个数,可以省略 ) primary key autoincrement,           属性名 类型 ( 字符个数,可以省略 ) null( 不可以省略 ),           属性名 类型 ( 字符个数,可以省略 ) not null( 可以省略 ),           属性名 类型 ( 字符个数,可以省略 ) not null( 可以省略 )    );         autoincrement 自动增长 , 确保主键不会重复      primary key 主键 , 唯一标识一条记录 , 每个表都需要一个主键 .       注意 类型有 integer,text,blob 等   例如:    create table if not exists Book  (       id integer primary key autoincrement,       name text,       url text,       des text  );  

 2. 表中插入数据 (属性要全部写吗?不用; 可以插入一条数据吗?)  insert into 表名 ( 属性名 1, 属性名 2, 属性名 3) values ('','','');   例如  insert into Book (name,url,des) values (' 霍金全集 ',' www.baidu.com ',' 描述 ');  insert into Book(name,url,des) values('JK','HarryPotter','magic');  insert into Book(name,url,des) values('Luxun','Nahan','chiren')   insert into A select * from B   insert into MyCollections select * from Home where id=1;       插入属性  alter table Book add column price float

 3. 查询

 select  字段名( * 代表所有字段,如果有多个字段用英文的 , 分割) from 表名字 [where 字段名 =‘’] order by 字段名 desc | asc;   注意: 1,where 判断 > , >= ,< , <=,between 字段 and 字段

     2,desc 降序   asc 升序   select * from Book order by id desc   例如:   ( 1 )查询表中所有字段数据

 select * from Book;   ( 2 )查询判断的条件  select * from Book where 字段名 ='';  (3)select name,url from Book where name = ' 钢铁是怎么炼成的 '                               where bool = 1

 4. 模糊查询

 %     替代一个或多个字符  _     仅替代一个字符  select  字段名 from 表名 where  属性 like '% 关键字 %';

例如   select * from Book where  name like '% 钢铁 %';  

  5. in查询    将在括号的内容查询出来 . not in 将不在括号中的内容查询出来

 select  字段名 from 表名 where 字段名 in (' 关键字 ',' 关键字 ');     例如:  select * from Book where name in (' 我的青春 ',' 钢铁是怎么炼成的 ');  

 6. 更新

 update  表名 set 属性名 = ' 关键字 ' where 属性名 = 关键字

例如:  update Book set url=' www.aaa.com ' where id = 2  update Book set price = 200 where id = 2    

 7. 删除数据

 delete from  表名 where 属性名 = ' 关键字 '; 例如:  delete from Book where name = ' 霍金全集 ';  

 8. 删除整张表  drop table  表名 ;

   9. 添加属性 ( 字段 )  (删除属性?)  alter table 表名 add column 属性名 类型 ;   例如:  alter table Book add column price integer;

  聚合函数

 10. 求和  select sum( 属性名 ) from 表名   select sum(price) from Book   select sum(id), sum(price) from Book     例如:  select sum(age) from User           NSInteger count = [rs intForColumn : @"sum(buyNum)" ];  

 11. 求平均值  select avg( 属性名 ) from 表名   例如:  select avg(age) from User   select avg(id), avg(price) from Book  

 12. 求最大值  select max( 属性名 ) from 表名   例如:  select max(age) from User  select max(id), max(price) from Book  

 13. 求最小值  select min( 属性名 ) from 表名   例如:  select min(age) from User  

 14. 求元组个数  (求共几条数据?)

 select count(*) from  表名  select count(distinct|all 属性名 ) from 表名   如果指定 DISTINCT 短语,则表示在计算时要取消指定列中的重复值。如果不指定 DISTINCT 短语或指定 ALL 短语( ALL 为缺省值),则表示不取消重复值。 消除重复   例如: select count(*) from User select count(distinct name) from User

FMDB使用

因为在程序的很多地方,都需要使用到数据库存储.为了避免每次都打开,关闭数据库,我们把它做成单例
获取单例的命名规则,一般用,defalut,standard,shareInstance
1.FMDB特性
2.使用FMDB操作数据库
1)打开数据库
- (instancetype)databaseWithPath:(NSString *)aPath;
开启数据库
open
2)关闭数据库
- (BOOL) close;
3)表创建
- (BOOL) executeUpdate:(NSString *)sql, ...; 
4)增加一条记录
5)删除一条记录
6)修改一条记录
7)查询记录
- (FMResultSet *) executeQuery:(NSString *)sql, ...;
①遍历结果
是否有下一条记录
- (BOOL) next;
②获取数据
- (int)[数据类型]ForColumn:(NSString *)columnName;
- (int)[数据类型]ForColumnIndex:(int)
-stringForColumn:
8)删除表
SQLite数据库以及FMDB的使用SQLite数据库SQL语句FMDB使用
SQLite数据库以及FMDB的使用SQLite数据库SQL语句FMDB使用
SQLite数据库以及FMDB的使用SQLite数据库SQL语句FMDB使用
SQLite数据库以及FMDB的使用SQLite数据库SQL语句FMDB使用
SQLite数据库以及FMDB的使用SQLite数据库SQL语句FMDB使用