美文网首页
SQLite数据库

SQLite数据库

作者: KimiY | 来源:发表于2016-11-09 09:31 被阅读0次

SQLite数据库

1.数据库简介

1.1数据库的作用:"离线缓存数据"

1.2数据缓存策略

plist

归档

偏好设置

沙盒文件

"SQLite数据库"

1.3系统提供的数据存储方式的弊端:

不方便操作大量的数据

-系统提供的数据存储方式都是覆盖存储的,新的数据会覆盖旧的数据.而且当数据量非常大时,如果要添加新的数据,必须先把旧数据全部加载到内存中

不方便查找大量的数据

-当数据量非常庞大时,要查询其中某些数据,就非常困难

代码演示plist文件保存数据

1.4SQLite简介

SQLite是一个轻量级,体积小,嵌入式,功能强大,跨平台的数据存储方式

客户端的数据库: SQLite

服务器端的数据库: MySQL --> SQLServer --> Oracle

1.5学习方式

先用Navicat客户端演示SQLite的使用(仅仅是上课演示而已,不需要掌握)

再用代码演示SQLite的使用(需要熟练使用)

2.Excel存储数据

2.1提示: SQLite数据库存储数据的结构和Excel很像

"Excel""SQLite"

-创建Excel文件-创建一个数据库文件

-创建表-创建表

-确定表头-创建数据库的字段名(Excel表头),并指定数据类型

-对Excel表进行数据操作-对数据库进行增删改查

2.2一个数据库中,可以有多张表,每个表中可以存储不同的数据

3.Navicat存储数据-创建数据库和表

3.1提示:数据库本身就是一个文件,可以用终端和客户端来创建和操作

3.2Navicat创建数据库和表的步骤:

1.创建一个数据库文件,以".sqlite"结尾

2.建立Navicat和数据库文件的连接,只有建立好连接才能操作数据库文件

3.创建数据库表,创建表头并指定数据类型

4.保存数据库文件,以"t_xxx"命名

4.Navicat操作数据-增删改查

4.1在数据库中

行:记录/数据(一条记录/一条数据)

列:字段名/列名

4.2增删改查操作

新增:'+'

删除:'-'

修改:双击字段直接修改

查询:'filter'(过滤)

4.3以上操作都是在Navicat客户端操作的,实际开发中是在Xcode中写代码.

5.SQL语句之数据定义语句-创建和删除表

iOS             OC

Android         JAVA

SQLite数据库"SQL语句"

5.1SQL语句:一个通用的数据库语言,适用于客户端数据库(SQLite)和服务器端数据库(MySQL,SQLServer,Oracle)

5.2客户端的SQL语句需要掌握:"数据定义语句","数据操作语句","条件语句","数据查询语句"

5.3数据定义语句:创建(create)和删除(drop)数据库表

-创建数据库表:

create tableifnot exists表名(字段名1类型,字段名2类型,...);

"create table if not exists t_product(productID integer,productName text,productPrice integer);"

-删除数据库表

drop tableifexists表名;

"drop table if exists t_product;"

6.SQL语句之数据操作语句-增删改

-提示:到目前为止数据库和数据库表都已经创建好了,现在开始就是操作数据库

6.1新增语句

insert into表名(字段名1,字段名2,...) values(字段1值,字段2值,...);

"insert into t_product(productID,productName,productPrice) values(1005,'iPhone103',2000);"

注意:字符串用'单引号'引起来

6.2删除语句

delete from表名where条件语句;

"delete from t_product where productPrice = 1000;"

注意:如果执行删除语句时不加条件语句,就会删除表中所有的记录

6.3修改语句

不加条件时,所有的productPrice字段的值都会修改成103

"update t_product set productPrice = 103;"

按照条件修改一个字段的值

"update t_product set productPrice = 333 where productID = 1005;"

按照条件,修改一条记录的多个字段

"update t_product set productName = 'iPHone1000',productPrice = 1000 where productID = 1002;"

7.SQL语句之查询语句(相当重要)

7.1准备工作:执行提前准备好的新增语句,准备要查询的数据

7.2查询语句体验

查询价格大于5500的商品信息

"select * from t_product where productPrice > 5500;"

查询价格小于4000或者价格大于5500的商品信息

"select * from t_product where productPrice < 4000 or productPrice > 5500;"

查询商品编号小于100并且价格小于4000的商品信息

"select * from t_product where productID < 100 and productPrice < 4000;"

注意:"select *"是查找表中的所有字段

8.排序和分页查找

8.1排序

提示:分页和排序都是在某个查询结果后面执行进行的

使用场景:电商类APP中的商品按照价格的从高到低筛选展示

查询出来的数据,按照价格从低到高排序

"select * from t_product where productID < 100 and productPrice < 4000 order by productPrice;"

查询出来的数据,按照价格从高到低排序

"select * from t_product where productID < 100 and productPrice < 4000 order by productPrice desc;"

注意:"order by"是默认从低到高;"desc"是从高到低

8.2分页查询

从第0条开始查询,查询五条记录

"select * from t_product where productID < 100 and productPrice < 4000 order by productPrice desc limit 0,5;"

"limit 0,5":分页语句;索引,每页条数.从第0条开始查询,每页查询五条记录

规律:

第1页: limit0,5

第2页: limit5,5

第3页: limit10,5

...

第n页: limit (n-1)*每页条数,每页条数

注意:

当取到最后,记录不足每页条数时,就取实际剩下的记录

分页语句放在查询语句的后面

9.模糊查询

9.1使用场景:关键字搜索

查找商品价格中带99的商品

"select * from t_product where productPrice like '%99%';"

查找商品价格中带99的商品,按照价格从高到低排序

"select * from t_product where productPrice like '%99%' order by productPrice desc;"

查找商品价格中带99的商品,按照价格从高到低排序,取前面五条

"select * from t_product where productPrice like '%99%' order by productPrice desc limit 0,5;"

10.主键字段

10.1提示:

当有两条记录是一样的时候,可以使用主键字段来区别

主键可以自增长,数据库建议我们每个表中都要有主键字段

10.2主键字段演练

增加字段(了解)

"alter table t_studentInfo add id_replace integer;"

新建表,并设置主键字段

"create table if not exists t_class(id integer primary key,className text not null,classNO integer);"

10.3注意:

"primary key":某某字段为主键

"not null":某某字段不能为空

11.Xcode之原生SQLite -创建数据库和表

11.1提示:导入头文件"#import ";新增类库"libsqlite3.0.tbd"

11.2使用步骤

1.创建数据库

2.打开数据库

3.建表(t_person)

4.操作表

11.3注意:

- sqlite3中的函数都是以sqlite3开头的

-创建并打开数据库函数: sqlite3_open

-建表和数据操作函数(查询函数除外) : sqlite3_exec

12.Xcode之原生SQLite -数据增删改查

-建表和数据操作函数(查询函数除外) : sqlite3_exec

-查询函数: sqlite3_prepare_v2

-查询数据时会得到结果集,要查询的数据都在结果集中,while循环遍历结果集一条一条记录取出来

13.FMDB -创建数据库和表

13.1FMDB简介

- FMDB是一个操作数据库的第三方框架,并且支持多线程环境下的操作

-也是需要手动导入'libsqlite3.0.tbd'库

-"FMDatabase":单线程;"FMDatabaseQueue":多线程;"FMResultSet":查询的结果集

13.2演练保存Heros模型数据

准备模型类和保存模型数据的工具类

13.3FMDB使用步骤:

1.创建数据库

2.打开数据库

3.创建表

4.增删改查

13.4注意:

-创建数据库和建表只需要执行一次,可以在"+ (void)initialize"方法中实现

-建表,增删改操作都是同一个方法"[_db executeUpdate]"

-查询是另外的方法"[_db executeQuery]"

15.FMDB增删改查

15.1新增操作

[_db executeUpdateWithFormat:@"insert into t_heros(name,age) values(%@,%@)",hero.name,hero.age];

15.2删除操作

[_db executeUpdateWithFormat:@"delete from t_heros where name = %@",hero.name];

15.3修改操作

[_db executeUpdateWithFormat:@"update t_heros set name = %@ where id = 3",hero.name];

15.4查询操作

-需求:把查询出来的数据展示在列表上

- UI准备:准备好列表

-数据准别

获取结果集: FMResultSet *resultSet = [_db executeQuery:@"select * from t_heros"];

while循环遍历结果集,把遍历出来的数据转成模型数据,并添加到模型数组

取结果集中的数据: NSString *name = [resultSet stringForColumn:@"name"];

16.FMDB模糊查找-关键字搜索

16.1注意:

1.大坑提示:模糊查询时,需要自己拼接查询语句,不要使用框架提供的

2.'%'是特殊字符,此时需要使用%转义.即'%%'

3.自己拼接查询语句时,就需要自己添加单引号把字符串引起来

16.2自己拼接模糊查询语句

-错误的拼接和执行模糊查询的方式

FMResultSet *resultSet = [_db executeQueryWithFormat:@"select * from t_heros where name like '%%%@%%'",keyWord];

-正确的拼接和执行模糊查询的方式

NSString *selectSQL = [NSString stringWithFormat:@"select * from t_heros where name like '%%%@%%'",keyWord];

FMResultSet *resultSet = [_db executeQuery:selectSQL];

17.多线程操作数据库的问题及解决办法

-问题:当有多个线程同时操作一个数据库时,只有一个数据会写入.

-解决办法:让FMDatabaseQueue(串行队列)来管理数据库对象.多个操作按顺序来进行

18.封装FMDataBaseQueue单例

新建单例类,继承自FMDataBaseQueue,保证只创建一次

把FMDatabaseQueue定义成单例的目的是为了保证队列在内存中是唯一的一个,当有多个数据库操作任务时,都可以放在同一个队列中

相关文章

  • SQLite 创建数据库

    SQLite 创建数据库 SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库。您不需要任何...

  • 第四篇:sqlite数据库与FMDB

    目录一、sqlite数据库二、FMDB 一、sqlite数据库 sqlite数据库是基于C实现的、移动端开发常用的...

  • Pycharm中连接数据库sqlite

    django 有个数据库 sqlite sqlite是小型关系数据库

  • Python数据分析基础----第二十二天

    数据库 Python内置的sqlite3模块 import sqlite3 创建sqlite3内存数据库 创建带有...

  • Sqlite 使用笔记

    1. 数据库基本操作封装 sqlite 数据操作 语句类型 sqlite 数据库的简单实用- 导入sqlite3数...

  • 我的电脑上装了些什么软件

    开发 Sqlite 工具 DB Browser for SQLite 专门查看sqlite数据库使用,比较方...

  • Android数据库

    一、SQLite 1、SQLite介绍 1.1、简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库...

  • android笔记6

    本章学习目标: 了解SQLite数据库的特点和体系结构 掌握SQLite数据库的建立和操作方法 SQlite介绍 ...

  • sqlite基础

    SQLite 什么是SQLite SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在...

  • 四种数据存储方式(下)

    3.sqlite3 打开数据库: sqlite3 *database; int result = sqlite3_...

网友评论

      本文标题:SQLite数据库

      本文链接:https://www.haomeiwen.com/subject/ecvzuttx.html